MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Pociągnij i dodaj jednocześnie z mongo

Błąd jest właściwie tym, co oznacza, ponieważ nie można działać na dwóch rzeczach o tej samej „ścieżce” w tej samej operacji aktualizacji. Dwa operatory, których używasz, nie przetwarzają sekwencyjnie, jak mogłoby się wydawać.

Możesz to zrobić za pomocą tak „sekwencyjnego”, jak to tylko możliwe, za pomocą interfejsu API operacji „luzem” lub innej formy „zbiorczej” aktualizacji. Oczywiście w granicach rozsądku, a także na odwrót:

var bulk = db.coll.initializeOrderedBulkOp();
bulk.find({ "tags": 1 }).updateOne({ "$addToSet": { "tags":  2 } });
bulk.find({ "tags": 1 }).updateOne({ "$pull": { "tags": 1 } });

bulk.execute();

Nie gwarantuje to, że nic innego nie będzie próbowało modyfikować, ale jest tak blisko, jak obecnie.

Zobacz także surowe polecenie „update” z wieloma dokumentami.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Przypadki użycia NoSQL

  2. Utwórz bazę danych w MongoDB

  3. Usuń wszystkie symbole inne niż utf-8 z ciągu

  4. MongoDB $substrBytes

  5. Skonfiguruj logowanie dla sterownika MongoDB Java