MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

pullAll durante la rimozione degli oggetti incorporati

Il $pullAll operatore è in realtà una scorciatoia "caso speciale" che funziona su array con solo valori al loro interno, come il tuo caso alternativo.

Quello che vuoi veramente è $pull e il suo argomento è una "query" per i documenti contenuti nell'array. Quindi il tuo elenco diventa quindi un argomento per $in :

db.bios.update(
   { "name.first": "James" },
   { 
      "$pull": { 
         "awards": { "by": { "$in": ["Stockholm", "Hollywood"] } } 
      } 
   }
)

Quindi nell'altro tuo esempio, una forma più lunga di $pullAll sarebbe:

db.bios.update(
   { "name.first": "James" },
   {
       "$pull": { "contribs": { "$in": ["Java","UNIX"] } }
   }
)

Stessa cosa ma solo il modulo "mano lunga".