2017-05-22 62 views
4

在Nodej中使用Mongoose,您可以使用find返回一些字段。 例如。從findOneAndUpdate返回的Mongoose選擇字段

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

但我似乎無法弄清楚如何使用findOneAndUpdate返回某些字段。

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

以前有沒有人做到這一點? 我無法在文檔中找到它。

+0

檢查此問題http://stackoverflow.com/questions/32811510/mongoose-findoneandupdate-doesnt-return-updated-document –

+0

這不是我所要求的。我不在乎使用{new:true}來檢索新數據或舊數據。請閱讀這個問題 –

回答

5

manual,則options參數需要"fields"關鍵在它,因爲還有其他的細節,如"upsert""new"哪裏適用。在你的情況,你希望"new"選項:

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

或者您可以使用.select()

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

注意到沒有"new": true返回的文件是在狀態之前的更新改造被處理。有時候這就是你的意思,但大多數時候你真的想要修改過的文檔。

0

使用選項{新:真正}在findOneAndUpdate(默認:false)

相關問題