El $pullAll
operador es en realidad un atajo de "caso especial" que funciona en matrices con solo valores en ellos, como su caso alternativo.
Lo que realmente quieres es $pull
y su argumento es una "consulta" de los documentos contenidos en la matriz. Entonces su lista se convierte en un argumento para $in
:
db.bios.update(
{ "name.first": "James" },
{
"$pull": {
"awards": { "by": { "$in": ["Stockholm", "Hollywood"] } }
}
}
)
Entonces, en su otro ejemplo, una forma más larga de $pullAll
sería:
db.bios.update(
{ "name.first": "James" },
{
"$pull": { "contribs": { "$in": ["Java","UNIX"] } }
}
)
Lo mismo pero solo la forma "a mano".