$pullAll
operatorn är faktiskt en genväg för "specialfall" som fungerar på arrayer med bara värden i dem, till exempel ditt alternativa fall.
Det du verkligen vill ha är $pull
och dess argument är en "fråga" för dokumenten som finns i arrayen. Så din lista blir då ett argument till $in
:
db.bios.update(
{ "name.first": "James" },
{
"$pull": {
"awards": { "by": { "$in": ["Stockholm", "Hollywood"] } }
}
}
)
Så i ditt andra exempel, en längre form av $pullAll
skulle vara:
db.bios.update(
{ "name.first": "James" },
{
"$pull": { "contribs": { "$in": ["Java","UNIX"] } }
}
)
Samma sak men bara "longhand"-formen.