如何通过 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”
我是 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”