Vous devez inclure le champ de tableau dans le cadre du document de requête afin d'utiliser le positional operator
.
Par exemple, si vous souhaitez mettre à jour le premier élément du tableau, c'est-à-dire avec { "attributes.name": "x" }
alors vous pourriez suivre le modèle :
db.spaces.update(
{ "attributes.name": "x" }, // <-- the array field must appear as part of the query document.
{ "$set": { "attributes.$.weight": 2 } },
{ "multi": true }
)
Pour les nouvelles versions de MongoDB 3.2.X
, vous pouvez utiliser le updateMany()
méthode pour mettre à jour plusieurs documents dans la collection en fonction du filtre ci-dessus.