De $pullAll
operator is eigenlijk een "special case" snelkoppeling die werkt op arrays met alleen waarden erin, zoals uw alternatieve case.
Wat je echt wilt is $pull
en het argument is een "query" voor de documenten in de array. Dus je lijst wordt dan een argument voor $in
:
db.bios.update(
{ "name.first": "James" },
{
"$pull": {
"awards": { "by": { "$in": ["Stockholm", "Hollywood"] } }
}
}
)
Dus in uw andere voorbeeld, een langere vorm van $pullAll
zou zijn:
db.bios.update(
{ "name.first": "James" },
{
"$pull": { "contribs": { "$in": ["Java","UNIX"] } }
}
)
Hetzelfde, maar alleen de "handmatige" vorm.