O MongoDB remove um item de uma matriz dentro de uma matriz de objetos
Eu tenho um documento que se parece com isso:
{
"_id" : ObjectId("56fea43a571332cc97e06d9c"),
"sections" : [
{
"_id" : ObjectId("56fea43a571332cc97e06d9e"),
"registered" : [
"123",
"e3d65a4e-2552-4995-ac5a-3c5180258d87"
]
}
]
}
Eu gostaria de remover o'e3d65a4e-2552-4995-ac5a-3c5180258d87'
noregistered
matriz desó a seção específica com o_id
do'56fea43a571332cc97e06d9e'
.
Minha tentativa atual é mais ou menos assim, mas apenas retorna o documento original sem modificações.
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'}
]
}
})
Eu olhei para$pull
, mas não consigo descobrir como fazê-lo funcionar em uma matriz de objetos aninhados que contêm outra matriz. o$pull
todos os exemplos parecem lidar com apenas um nível de aninhamento. Como faço para remover a entrada correspondente doregistered
matriz do item nosections
matriz com o_id
que eu forneço?