Der $pullAll
Der Operator ist eigentlich eine Abkürzung für "Sonderfälle", die mit Arrays funktioniert, die nur Werte enthalten, wie z. B. Ihr alternativer Fall.
Was Sie wirklich wollen, ist $pull
und sein Argument ist eine "Abfrage" für die im Array enthaltenen Dokumente. Ihre Liste wird dann also zu einem Argument für $in
:
db.bios.update(
{ "name.first": "James" },
{
"$pull": {
"awards": { "by": { "$in": ["Stockholm", "Hollywood"] } }
}
}
)
In Ihrem anderen Beispiel also eine längere Form von $pullAll
wäre:
db.bios.update(
{ "name.first": "James" },
{
"$pull": { "contribs": { "$in": ["Java","UNIX"] } }
}
)
Dasselbe, aber nur die "Longhand"-Form.