Updating embedded document property in Mongodb

You can use update with array filters:
https://docs.mongodb.com/manual/reference/operator/update/positional-filtered/#positional-update-arrayfilters

Probably something like this:

yourcollection.update(
{},
{
    "$set": {
        "Authors.$[element].Name": "zzz"
    }
},
{
    "multi": true,
    "arrayFilters": [
         { "element.Slug": "slug" }
    ]
}
)

Ps.: it will not work in Robo3T as explained here: Mongodb 3.6.0-rc3 array filters not working? However, you can try on a mongo shell with version >= 3.6.


.update(Authors:{$elemMatch:{Slug:"slug"}}, {$set: {'Authors.$.Name':"zzz"}});

Tags:

Mongodb