MongoDB elimina un elemento de una matriz dentro de una matriz de objetos
Tengo un documento que se ve así:
{
"_id" : ObjectId("56fea43a571332cc97e06d9c"),
"sections" : [
{
"_id" : ObjectId("56fea43a571332cc97e06d9e"),
"registered" : [
"123",
"e3d65a4e-2552-4995-ac5a-3c5180258d87"
]
}
]
}
Me gustaría eliminar el'e3d65a4e-2552-4995-ac5a-3c5180258d87'
en elregistered
gama desolamente la sección específica con el_id
de'56fea43a571332cc97e06d9e'
.
Mi intento actual es algo como esto, pero solo devuelve el documento original sin modificar.
db.test.findOneAndUpdate(
{
$and: [
{'sections._id': ObjectId('56fea43a571332cc97e06d9e')},
{'sections.registered': 'e3d65a4e-2552-4995-ac5a-3c5180258d87'}
]
},
{
$pull: {
$and: [
{'sections._id': ObjectId('56fea43a571332cc97e06d9e')},
{'sections.registered': 'e3d65a4e-2552-4995-ac5a-3c5180258d87'}
]
}
})
He buscado en$pull
, pero parece que no puedo entender cómo hacer que funcione en una matriz de objetos anidados que contienen otra matriz. los$pull
Todos los ejemplos parecen tratar solo con un nivel de anidamiento. ¿Cómo elimino la entrada coincidente delregistered
matriz del artículo en elsections
matriz con el_id
que yo suministro?