【问题标题】:How to update many documents with one query in MongoDB如何在 MongoDB 中使用一个查询更新多个文档
【发布时间】:2019-02-21 05:49:53
【问题描述】:

我有很多这样的文件:

{_id: 1, data: {a: 989, b: 732}},
{_id: 2, data: {a: 943, b: 778}},
{_id: 3, data: {a: 932, b: 768}},

我想更新任何文档,但只有一个查询。例如,我想将{a: 1, b: 1} 设置为_id: 1,而不是将{a: 2, b: 2} 设置为_id: 2 等等。

【问题讨论】:

  • 您能否提供更多详细信息来说明您希望的结果是什么?为什么您对将所有更新混合在一起特别感兴趣? - 如果你使用 Node.JS,你可以创建一个更新承诺数组,然后执行 Promise.all(update_promises);尽快执行所有更新,而无需等待前一个更新完成后再开始下一个
  • 我想看:{_id: 1, data: {a: 1, b: 1}}, {_id: 2, data: {a: 2, b: 2}},后更新
  • 我有 1000 多个文档,我不想进行 1000 多个查询
  • 这里需要使用bulkWrite操作。

标签: mongodb


【解决方案1】:

我已经用bulkWrite完成了它

collection(`someCollection`).bulkWrite([
  {
    updateOne: {
      filter: {_id: 1},
      update: {$set: {'data.a': 1000, 'data.b': 800}},
    }
  },
  {
    updateOne: {
      filter: {_id: 2},
      update: {$set: {'data.a': 1001, 'data.b': 801}},
    },
  },
  // ...
])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 2017-09-22
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多