$pullAll
операторът всъщност е пряк път за „специален случай“, който работи върху масиви само със стойности в тях, като вашия алтернативен регистър.
Това, което наистина искате, е $pull
и неговият аргумент е "заявка" за документите, съдържащи се в масива. Така вашият списък след това се превръща в аргумент за $in
:
db.bios.update(
{ "name.first": "James" },
{
"$pull": {
"awards": { "by": { "$in": ["Stockholm", "Hollywood"] } }
}
}
)
Така че в другия ви пример, по-дълга форма на $pullAll
ще бъде:
db.bios.update(
{ "name.first": "James" },
{
"$pull": { "contribs": { "$in": ["Java","UNIX"] } }
}
)
Същото нещо, но само "дългата" форма.