Reputation: 23
Update nested object values in array, we have multiple objects in array.
{
"_id" : ObjectId("5a7e395e20a31e44e0e7e284"),
"name" : "a",
"address" : [
{
"street" : "123",
"town" : "bar"
},
{
"street" : "Lower Street",
"town" : "bar"
},
{
"street" : "123",
"town" : "foo"
}
]
}
Need to update town is HNO if street is 123.
Upvotes: -3
Views: 44
Reputation: 51420
Use positional filtered operator $[<identifier]
to update the matching element in the array.
db.collection.updateMany({
"address.street": "123"
},
{
$set: {
"address.$[a].town": "HNO"
}
},
{
arrayFilters: [
{
"a.street": "123"
}
]
})
Upvotes: 1