I have a document that looks like this:
{
"_id" : ObjectId("56fea43a571332cc97e06d9c"),
"sections" : [
{
"_id" : ObjectId("56fea43a571332cc97e06d9e"),
"registered" : [
"123",
"e3d65a4e-2552-4995-ac5a-3c5180258d87"
]
}
]
}
I'd like to remove the 'e3d65a4e-2552-4995-ac5a-3c5180258d87'
in the registered
array of only the specific section with the _id
of '56fea43a571332cc97e06d9e'
.
My current attempt is something like this, but it just returns the original document unmodified.
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'}
]
}
})
I've looked in to $pull
, but I can't seem to figure out how to make it work on an array of nested objects containing another array. The $pull
examples all seem to deal with only one level of nesting. How do I remove the matching entry from the registered
array of the item in the sections
array with the _id
that I supply?
"e3d65a4e-2552-4995-ac5a-3c5180258d87"
in any of the sections? I want to only remove that string from the registered array of the specific section. – Wivern