一尘不染

猫鼬选择字段从findOneAndUpdate返回

node.js

在Node.js中使用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....

有人做到过吗?我在文档中找不到它。


阅读 394

收藏
2020-07-07

共1个答案

一尘不染

说明书,该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返回的文档处于处理更新修改 之前 的状态。有时候这就是您的意思,但是大多数时候您确实想要修改后的文档。

2020-07-07