当前位置: 首页 > 面试题库 >

猫鼬选择字段从findOneAndUpdate返回

夹谷鸿福
2023-03-14
问题内容

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

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


问题答案:

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



 类似资料:
  • 问题内容: 我正在尝试只选择一个特定的领域 但是在我的json响应中,我也收到_id,我的文档架构只有两个字段,_id和name 为什么??? 问题答案: 除非您明确排除该字段,否则该字段始终存在。使用以下语法: 或通过对象显式:

  • 我正在尝试从一个select表单中获取一个时间值。我在代码中看不到任何错误,尝试更改所有类名和变量,但值仍然没有被get select。(提交表单后我看不到所选的值) 代码添加如下:

  • 问题内容: 我正在尝试验证并保存具有以下结构的Passport配置文件: http://passportjs.org/guide/profile/ 这是我想出的方案: 电子邮件具有名为“ type”的属性,该属性保留用于猫鼬类型。我该如何解决? 问题答案: 您需要使用对象定义字段:

  • 问题内容: 我正在使用版本3和2.2。我注意到一个字段已经开始出现在我的文档中。与版本控制有关吗?如何使用? 问题答案: 从这里: 该是对每个文档设置时,首先由猫鼬创建一个属性。此键值包含文档的内部修订版。此文档属性的名称是可配置的。默认值为。 如果这与您的应用程序冲突,则可以这样配置:

  • 我正在使用MongoDB版本2.2的版本3。我注意到一个字段开始出现在我的文档中。它与版本控制有关吗?它是如何使用的?

  • 我有一张相对较小的桌子(约5万行)。当我选择所有记录时,需要大约40秒。该表有3个JSONB列。当我选择除JSONB之外的每一列时,查询大约需要700ms。 如果我只添加一个JSONB字段,查询时间会跳到近10秒。 我从来没有使用where子句引用JSONB中的内容,只是选择*。尽管如此,我还是尝试添加GIN索引,因为我经常看到它们被提到是JSONB的性能提升器。 我已经运行了一个完全真空。 Po