【问题标题】:Mongodb multi update with different value具有不同值的MongoDB多重更新
【发布时间】:2019-03-19 21:49:53
【问题描述】:

我在 mongodb 中有多个文档要更新,每个文档都必须使用不同的值进行更新。要更新的值在 JSON 数组中可用。

{_id :1 ,name :'A','place':'London'},
{_id :2 ,name :'B','place':'UK'},
{_id :3 ,name :'C','place':'USA'},
{_id :4 ,name :'D','place':'CANADA'},
{_id :5 ,name :'E','place':'India'}

要更新的 JSON 数组:

[{_id :1 ,name :'l','place':'Indonesia'},{_id :2 ,name :'B','place':'UAE'}]

我必须用 json array 中的新值更新我的集合的 _id 1,2。如何在不迭代 json 数组和一个查询的情况下做到这一点。

【问题讨论】:

    标签: javascript node.js mongodb nosql


    【解决方案1】:

    如果您使用的是猫鼬,那么您可以尝试 bulkWrite 方法。 BulkWrite 只向 mongo 发送一个请求。代码看起来像这样:

    const itemsToUpdate = [
        { _id: ObjectId('5c6bd4c8716adf072955e855'), status: 'pending' },
        { _id: ObjectId('5c6bd4c8716adf072955e777'), status: 'done' },
      ];
    
    Model.bulkWrite(
     itemsToUpdate.map((item) => 
        ({
          updateOne: {
            filter: { _id: item._id },
            update: { $set: item }
          }
        })
      )
    })
    

    【讨论】:

      【解决方案2】:

      不,您不能在单个查询中更新具有不同值的多个文档。您必须遍历 json 数组并分别更新每个文档。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-14
        • 2016-12-29
        • 1970-01-01
        • 2019-07-19
        • 2018-01-24
        • 1970-01-01
        • 2013-04-04
        相关资源
        最近更新 更多