MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Node, Mongoose:rimuove l'elemento json dal risultato della query con delete

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.