MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

pullAll lors de la suppression d'objets intégrés

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".