2017-05-22 4 views
4

Mit Mongoose in Nodejs können Sie einige Felder mit Find zurückgeben. z.Mongoose wählen Felder aus findOneAndUpdate zurück

User.findOne({_id:'132324'}, {first_name:1, last_name:1}).exec... 

aber ich kann nicht herausfinden, wie bestimmte Felder mit findOneAndUpdate zurückgegeben werden.

User.findOneAndUpdate({_id:'132324'}, {$set : {..bla bla}}, {first_name:1, last_name:1}).exec.... 

Hat jemand das vorher erreicht? Ich kann es in der Dokumentation nicht finden.

+0

Überprüfen Sie diese Frage http://stackoverflow.com/questions/32811510/mongoose-findoneandupdate-doesn-return-updated-document –

+0

Das ist nicht, was ich überhaupt frage. Es ist mir egal, die neuen Daten oder alten Daten mit {new: true} zu erhalten. Bitte lesen Sie die Frage –

Antwort

5

Vom manual, das options Argument braucht einen "fields" Schlüssel drin, da gibt es andere Details wie "upsert" und "new" wo dies gilt. In Ihrem Fall Sie auch wollen die "new" Option:

User.findOneAndUpdate(
    { "_id": "132324" }, 
    { "$set": { "hair_color": "yellow" } }, 
    { 
    "fields": { "first_name":1, "last_name": 1 }, 
    "new": true 
    } 
).exec(...) 

Alternativ können Sie .select()

User.select({ "first_name": 1, "last_name": 1 }).findOneAndUpdate(
    { "_id": "132324" }, 
    { "$set": { "hair_color": "yellow" } }, 
    { "new": true } 
).exec(...) 

verwenden, dass das Dokument ohne "new": true Anbetracht dessen, in dem Zustand vor die Änderung der Aktualisierung zurückgegeben wird wurde verarbeitet. Manchmal meinst du das, aber die meiste Zeit willst du das modifizierte Dokument wirklich.

0

Verwenden Option {neu: true} in findOneAndUpdate (Standard: false)

Verwandte Themen