Le $pullAll
L'opérateur est en fait un raccourci "cas spécial" qui fonctionne sur des tableaux contenant uniquement des valeurs, comme votre cas alternatif.
Ce que vous voulez vraiment, c'est $pull
et son argument est une "requête" pour les documents contenus dans le tableau. Ainsi, votre liste devient alors un argument pour $in
:
db.bios.update(
{ "name.first": "James" },
{
"$pull": {
"awards": { "by": { "$in": ["Stockholm", "Hollywood"] } }
}
}
)
Donc, dans votre autre exemple, une forme plus longue de $pullAll
serait :
db.bios.update(
{ "name.first": "James" },
{
"$pull": { "contribs": { "$in": ["Java","UNIX"] } }
}
)
Même chose mais juste la forme "à la main".