2017-05-22 66 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)

相关问题