我的收藏名称为用户,其中显示了示例文档
{
"userid": "6492hwwd26362",
"open": false,
"arr1": [{
"name": "John",
"arr2": [{
"id": "1",
"name": "name1"
},
{
"id": "2",
"name": "name2"
}
]
}, {
"name": "Bill",
"arr2": [{
"id": "3",
"name": "name3"
},
{
"id": "4",
"name": "name4"
}
]
}]
}
现在,我想更新多个数组元素,例如,我想使用单个查询将名称值更新为id为2的“ name22”,并想将名称值更新为id为3的“ name33”(使用单个查询),请考虑id是唯一的。
我在下面尝试过此查询
db.users.update(
{
"arr1": {
$all: [{
$elemMatch: {
"arr2.id": "2"
}
}, {
$elemMatch: {
"arr2.id": "3"
}
}]
}
},
{
"$set": {
"arr1.$.arr2.$[inner1].name": "name22",
"arr1.$.arr2.$[inner2].name": "name33"
}
},
{
"arrayFilters": [{
"inner1.id": "2"
},
{
"inner2.id": "3"
}
]
}
)
但不能按预期工作。