Javascript 具有不同值的Mongodb多重更新

Javascript 具有不同值的Mongodb多重更新,javascript,node.js,mongodb,nosql,Javascript,Node.js,Mongodb,Nosql,我在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数组: [{_

我在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数组中的新值更新集合的_id1,2。我如何在不迭代json数组和一个查询的情况下做到这一点

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

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

如果您使用的是mongoose,那么您可以尝试 方法。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 }
      }
    })
  )
})

如果你使用猫鼬,那么你可以试试 方法。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 }
      }
    })
  )
})