首页 > 解决方案 > 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 年里事情发生了变化?

标签: mongodbmongoose

解决方案


推荐阅读