I have a collection name users showing sample documents
{
"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"
}
]
}]
}
Now I want to update multiple array elements for example I want to update name value to "name22" where id is 2 and want to update name value to "name33" where id is 3 using single query, consider id is unique.
I have tried this query below
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"
}
]
}
)
But not working as expected.