Tengo un documento profundamente anidado de miembros de la familia.
[{ "id": 1, "children" : [ { "id" : 1, "grandChildren": [ { "id" : 1, "toys": [ { "id":1 } ] } ] }, { "id" : 2, "grandChildren": [ { "id" : 1, "toys": [ { "id":1 } ] } ] } ] }]Me dijeron que los juguetes son únicos para los nietos, que también son únicos, etc., pero existe la posibilidad de que no lo sean y me gustaría estar absolutamente seguro de que cuando los quite, solo los quitaré para el nieto específico. del niño específico, etc.
Tengo una consulta que puede extraer todos los juguetes que coincidan con la identificación. Me preguntaba cómo puedo ser más específico y profundizar en los padres específicos.
db.family.updateOne( {"id": "1"}, {"$pull" : { "children.$[].grandChildren.$[].toys" : {"id" : "1"} } })Toda ayuda apreciada
Lo que quieres hacer es usar arrayFilters así:
db.collection.updateOne({ "id": "1" }, { "$pull": { "children.$[child].grandChildren.$[grandChild].toys": { "id": "1" } } }, { arrayFilters: [ { "child.id": "1" }, { "grandChild.id": "1" } ] })