Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何使用多个值更新数组中的多个项_Mongodb - Fatal编程技术网

Mongodb 如何使用多个值更新数组中的多个项

Mongodb 如何使用多个值更新数组中的多个项,mongodb,Mongodb,我有以下文档架构: let文档={ _id:'a1', 姓名:'某个名字', 项目:[{ _id:1, 名称:'item1', }, { _id:2, 名称:'item2', }, { _id:3, 名称:“项目3”, }, { _id:4, 名称:'item4', }, ] } 下面的更新负载是一个文档列表 let updates=[{ _id:1, 名称:'item11', }, { _id:2, 名称:'item22', }, { _id:3, 名称:'item33', }, { _id

我有以下文档架构:

let文档={
_id:'a1',
姓名:'某个名字',
项目:[{
_id:1,
名称:'item1',
},
{
_id:2,
名称:'item2',
},
{
_id:3,
名称:“项目3”,
},
{
_id:4,
名称:'item4',
},
]
}
下面的更新负载是一个文档列表

let updates=[{
_id:1,
名称:'item11',
},
{
_id:2,
名称:'item22',
},
{
_id:3,
名称:'item33',
},
{
_id:4,
名称:'item44',
},
]
我想用更新负载中具有相同
\u id的项目更新集合中的每个项目


如何做到这一点?

这是一个与每个唯一的
\u id
相关的过于具体的更新(因此不起作用-这不是“很多”每个
\u id
都是唯一的)。可能相关:

在您的情况下,这就像运行4次
updateOne
(每次都将名称更改为某个值)

一个选项是使用
bulkWrite

另一个选项是使用普通Javascript(And或),并对数组中的每个项
updateOne

仅概述(您应该在MongoDB游乐场下测试此概念)

db.myCollection.bulkWrite([
      { updateOne : {
         "filter" : { "_id" : "1" },
         "update" : { $set : { "name" : "item11" } }
      },
      { updateOne : {
         "filter" : { "_id" : "2" },
         "update" : { $set : { "name" : "item22" } }
      }
]);
updates.map(function(item) {
  console.log(item._id); // 1 2 3 4
  console.log(item.name); // item11 item22 item33 item44
  db.myCollection.updateOne(
    { "_id" : item._id  }, /* filter */
    { $set: { "_id" : item.name } } /* update */
  );
})