MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB met à jour les champs dans un tableau imbriqué

Ce problème a été résolu. La fonctionnalité de mise à jour des champs à l'intérieur d'un tableau imbriqué d'objets est disponible dans les versions MongoDB 3.6+. Regardez les opérateurs positionnels (tous et avec identifiant) ici.

//Update all docs in collection matching photo name "play" to "play photo"
db.collectioname.update(
    {},
    { $set: { "albums.$[].photos.$[photo_field].name": "play photo" } },
    { arrayFilters: [  {"photo_field.name": "play"} ], multi: true}
);

//Update this specific doc given in question matching photo name "play" to "play photo"
db.collectioname.update(
    {"_id" : ObjectId("4f41a5c7c32810e404000000")},
    { $set: { "albums.$[].photos.$[photo_field].name": "play photo" } },
    { arrayFilters: [  {"photo_field.name": "play"} ]}
);

Ceci est pour aider les personnes qui viennent ici après MongoDB 3.6