首页 > 解决方案 > MongoDB:如何使用对象数组更新许多对象,每个对象都有自己的_id?

问题描述

我有一个对象数组,其中每个对象都有自己的“_id”。我正在尝试使用 updateMany(),而不是为每个对象调用 updateOne,所以我不会对 mongoDB 提出太多要求。

例如,这是对象:

[
  {
    _id: 123,
    name: "apple",
    qty: 2
  },
  {
    _id: 555,
    name: "melon",
    qty: 1
  },
  {
    _id: 799,
    name: "avocado",
    qty: 0
  }
]

我想用这个对象数组 updateMany(),每个对象必须是集合中的一个Document,我尝试了很多解决方案,但没有一个有效,只使用 insert(),我可以发送整个数组,它会让每个对象都是一个Document,使用insert的问题是,这个对象每天都来,有些值可能会改变,比如name和qty,但_id保持不变。

我尝试了以下

sync function updateMany(client) {
            result = await client.db("sample_db").collection("CollectionA")
                ..updateMany({},
                    {asd},
                    {upsert: true});
        }

但没有奏效,我尝试了其他解决方案,比如让每个对象使用 $setOnInsert 为 _id 和 $set 其余的..

是否可以在不需要 insert() 或为每个对象调用一次的情况下做到这一点?

我使用的语言是 Javascript,在 Node.JS 上运行。

标签: javascriptarraysnode.jsmongodbobject

解决方案


推荐阅读