O
$pullAll
O operador é na verdade um atalho de "caso especial" que funciona em matrizes com apenas valores neles, como seu caso alternativo. O que você realmente quer é
$pull
e seu argumento é uma "consulta" para os documentos contidos no array. Portanto, sua lista se torna um argumento para $in
:db.bios.update(
{ "name.first": "James" },
{
"$pull": {
"awards": { "by": { "$in": ["Stockholm", "Hollywood"] } }
}
}
)
Então, em seu outro exemplo, uma forma mais longa de
$pullAll
seria:db.bios.update(
{ "name.first": "James" },
{
"$pull": { "contribs": { "$in": ["Java","UNIX"] } }
}
)
Mesma coisa, mas apenas a forma "longhand".