MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Node, Mongoose:Entferne json-Element aus dem Abfrageergebnis mit delete

Ich denke, was Sie als JSON bezeichnen, ist angesichts der Tags, die Sie Ihrer Frage hinzugefügt haben, tatsächlich ein Mongoose-Dokumentobjekt. Da dieses Objekt an sein "Schema" angehängt ist, haben Sie dort möglicherweise Regeln wie ein "erforderliches" Feld oder ähnliches, die die Operation, die Sie ausführen möchten, stören.

Um eine Rohform des Objekts zurückzubekommen, verwenden Sie einfach .toObject() Methode auf dem Dokument result:

Model.findOne({ _id: id}, function(err,doc) {

    var raw = doc.toObject();
    delete raw.element;

    console.log( raw );

});

Natürlich können Sie das Feld im Abfrageergebnis mit der Grundform, die von .select() :

Model.findOne({ _id: id}, '-element', function(err,doc) {

    console.log( doc );

});

Beide Formen würden dieses bestimmte Feld aus der Antwort entfernen, aber wenn Sie möglicherweise mehr Kontrolle über das Ergebnis haben möchten, als die Feldprojektion von .select() Verwenden Sie dann .toObject() wie ein einfaches JavaScript-Objekt erstellen und manipulieren.