首页 > 解决方案 > 我可以在 MongoDB 的单个查询中更新不同的文档吗?

问题描述

我想用一个查询更新 MongoDB 中的不同文档。我现有的数据库集合如下所示:

[ { "_id":"1", "name": null, "Age": null }, { "_id":"2", "name":null, "Age":null}, { "_id":"3", "name":null, "Age": null } ]

我有以下 JSON:

[ { "_id":"1", "name":"Arav", "Age":"25" }, { "_id":"2", "name":"Mohan", "Age":"64" }, { "_id":"3", "name":"Nishant", "Age":"23" } ]

我想知道是否可以通过单个查询使用来自上述 JSON 的相应数据更新所有现有的 3 个文档。就像是:

db.products.insert( [ { "_id":"1", "name":"Arav", "Age":"25" }, { "_id":"2", "name":"Mohan", "Age":"64" }, { "_id":"3", "name":"Nishant", "Age":"23" } ] )

问题是它返回重复错误并且如果已经存在则不更新文档。

标签: node.jsmongodbmongodb-query

解决方案


您可以使用bulkWrite操作

假设你有这个 JSON 需要更新

const array = [
  {
    "_id": "1",
    "name": "Arav",
    "Age": "25"
  },
  {
    "_id": "2",
    "name": "Mohan",
    "Age": "64"
  },
  {
    "_id": "3",
    "name": "Nishant",
    "Age": "23"
  }
]

现在 bulkWrite查询

Model.bulkWrite(
  array.map((data) => 
    ({
      updateOne: {
        filter: { _id: data._id },
        update: { $set: { name: data.name, Age: data.age } }
      }
    })
  )
})

推荐阅读