Penso che quello a cui ti riferisci come JSON sia in realtà un oggetto documento Mongoose dati i tag che hai aggiunto alla tua domanda. Poiché quell'oggetto è collegato al suo "schema", potresti avere delle regole come un campo "obbligatorio" o simili che stanno interferendo con l'operazione che stai cercando di fare.
Per recuperare una forma grezza dell'Oggetto, usa semplicemente .toObject()
metodo sul risultato del documento:
Model.findOne({ _id: id}, function(err,doc) {
var raw = doc.toObject();
delete raw.element;
console.log( raw );
});
Ovviamente puoi sempre semplicemente omettere che il campo venga restituito nel risultato della query con il modulo di base fornito da .select()
:
Model.findOne({ _id: id}, '-element', function(err,doc) {
console.log( doc );
});
Entrambi i moduli rimuoverebbero quel particolare campo dalla risposta, ma se desideri un maggiore controllo sul risultato rispetto a quello che può essere fornito dalla proiezione del campo da .select()
quindi usa .toObject()
formare e manipolare proprio come un semplice oggetto JavaScript.