Mongooseselect字段从findOneAndUpdate返回

在Nodej中使用Mongoose可以使用find返回一些字段。 例如。

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.... 

有没有人以前做到这一点? 我无法在文档中find它。

在手册中 , 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返回的文档处于修改更新之前的状态。 有时这是你的意思,但大多数时候你真的想要修改的文件。

在findOneAndUpdate中使用选项{new:true}(默认值:false)