sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB actualizando campos en una matriz anidada

Este problema ha sido resuelto. La función de actualizar campos dentro de una matriz anidada de objetos está disponible en las versiones MongoDB 3.6+. Busque operadores posicionales (todos y con identificador) aquí.

//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"} ]}
);

Esto es para ayudar a las personas que vienen aquí después de MongoDB 3.6