Update multiple Array Elements in MongoDB
Updating multiple arrays in a MongoDB document is released with 3.6 version.
With the release of MongoDB
3.6 updating multiple array elements can be done using filtered
positional $[<identifier>]
The "arrayFilters" can be passed
in the options for .update(), .updateOne(), .updateMany(), .findOneAndUpdate() or .bulkWrite() method specifies the
conditions to match on the identifier given in the update statement. Any
elements that match the condition given will be updated.
Below example for updating
multiple array elements in a document, consider a collection employee :
/* 1 */
{
"_id" : 1,
"score" : [
10,
70,
50
]
}
/* 2 */
{
"_id" : 2,
"score" : [
20,
50,
60
]
}
/* 3 */
{
"_id" : 3,
"score" : [
20,
60,
30
]
}
Update query
db.employee.update(
{ },
{ $set: { "score.$[element]" : 40 } },
{ multi: true,
arrayFilters: [ { "element": { $gte: 30 } } ]
}
)