mongodb - UpdateMany mongodb 文档,其中包含文档中的值
问题描述
我使用 mongoose 和 node.js 连接到我的 MongoDB。我正在尝试使用从每个文档中已有的值计算出的值一次更新一堆文档。
我的文件如下所示:
[{
_id: 'ad07f',
enabled: true,
priority: 1,
more: "more data"
},{
_id: '9da0f',
enabled: false,
priority: 6,
more: "more data"
},{
_id: '35fas',
enabled: true,
priority: 3,
more: "more data"
},{
_id: '5f3ax',
enabled: true,
priority: 11,
more: "more data"
}]
我需要更新与过滤器匹配的所有文档。"enabled":true
.
我需要所有这些文档的优先级值增加 1。这意味着我需要查看文档字段的值,计算新值并更新新值。计算绝对是微不足道的。
有没有一种有效的方法来做到这一点?照原样,我正在考虑必须.find({ enabled: true }
在所有数据返回后执行 then ,使用 Loop 解析它forEach
,然后转身对每个文档执行单独的更新回 MongoDB。这似乎非常低效。
之前提出了一个类似的问题(在 Mongoose 中更新具有不同值的多个元素),答案基本上是运行一个 forLoop 并单独更新它们。也许自从那个答案之后的 7 年里事情发生了变化?
解决方案
推荐阅读
- c++ - 为什么 const 指针意外转换为 bool?
- javascript - 动态构建表时事件在 JQuery 中不起作用
- javascript - 动态和直接加载时在 div 和 document 上的 Delegate 出现问题
- drools - Instancof 在流口水规则引擎 drl 文件中不起作用
- c - 使用 LoadLibrary() 加载的 dll 未被访问,显示错误“找不到 dll”
- java - Java:修改作为可调用对象传递的匿名函数的参数
- android - 如何从android firebase实时数据库中的onDataChange返回arrayList
- c# - 有没有办法向剃须刀 PageModel 添加扩展方法?
- istio - Istio 断路器黑名单/白名单错误代码
- java - Hybris 站点地图不包含所有产品