sql >> Databasteknik >  >> NoSQL >> MongoDB

pullAll samtidigt som du tar bort inbäddade objekt

$pullAll operatorn är faktiskt en genväg för "specialfall" som fungerar på arrayer med bara värden i dem, till exempel ditt alternativa fall.

Det du verkligen vill ha är $pull och dess argument är en "fråga" för dokumenten som finns i arrayen. Så din lista blir då ett argument till $in :

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

Så i ditt andra exempel, en längre form av $pullAll skulle vara:

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

Samma sak men bara "longhand"-formen.




  1. Observera:Odefinierad egenskap:MongoDB\Driver\Manager::$mydb i [Path] i wamp-servern

  2. Hur aktiverar jag SSL/TLS i Mongoid 3-klienten?

  3. Hur indexerar MongoDB arrayer?

  4. Använd 'MongoMappingContext#setAutoIndexCreation(boolean)' eller åsidosätt 'MongoConfigurationSupport#autoIndexCreation()' för att vara explicit