Il $pullAll
operatore è in realtà una scorciatoia "caso speciale" che funziona su array con solo valori al loro interno, come il tuo caso alternativo.
Quello che vuoi veramente è $pull
e il suo argomento è una "query" per i documenti contenuti nell'array. Quindi il tuo elenco diventa quindi un argomento per $in
:
db.bios.update(
{ "name.first": "James" },
{
"$pull": {
"awards": { "by": { "$in": ["Stockholm", "Hollywood"] } }
}
}
)
Quindi nell'altro tuo esempio, una forma più lunga di $pullAll
sarebbe:
db.bios.update(
{ "name.first": "James" },
{
"$pull": { "contribs": { "$in": ["Java","UNIX"] } }
}
)
Stessa cosa ma solo il modulo "mano lunga".