sql >> Base de Datos >  >> NoSQL >> MongoDB

pullAll mientras elimina objetos incrustados

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