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)