$pullAll
operator er faktisk en genvej til "specielt tilfælde", som fungerer på arrays med kun værdier i dem, såsom dit alternative tilfælde.
Det du virkelig ønsker er $pull
og dets argument er en "forespørgsel" for de dokumenter, der er indeholdt i arrayet. Så din liste bliver så et argument til $in
:
db.bios.update(
{ "name.first": "James" },
{
"$pull": {
"awards": { "by": { "$in": ["Stockholm", "Hollywood"] } }
}
}
)
Så i dit andet eksempel, en længere form for $pullAll
ville være:
db.bios.update(
{ "name.first": "James" },
{
"$pull": { "contribs": { "$in": ["Java","UNIX"] } }
}
)
Det samme, men bare "langhånds"-formen.