如何通过 Id 更新嵌套数组元素

How Can I Update Nested Array Element By Id

我是 mongodb 的新手,我想使用 findOneAndUpdate

按 id 更新嵌套数组元素

const Data = {
   items : [
      {
       id: 1,
       name : "a",
       child : [
         { id : 11, name "aa"},
         { id : 12, name "bb"},
        ]
      },
      {
       id: 2,
       name : "b",
       child : [
         { id : 22, name "ba"},
         { id : 23, name "bb"},
        ]
      },
    ]
}

这是您可以通过 arrayFilters 执行的操作:

 db.collection.update({},
  {
    $set: {
    "items.$[y].child.$[x].name": "cc"
    }
  },
  {
    arrayFilters: [
     {
      "x.id": 11
     },
     {
      "y.id": 1
     }
   ]
 })

解释: 您指定需要通过 arrayFilter x 和 y 更新的元素,在示例中,此数组元素在 x 中为 id:11,在 y 中为 id:1。 在更新操作中,您为字段名称提供新值,在示例中,这是值“cc”

playground