MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Издърпайте и добавете задаване едновременно с монго

Грешката е до голяма степен това, което означава, тъй като не можете да действате върху две неща от един и същи "път" в една и съща операция за актуализиране. Двата оператора, които използвате, не обработват последователно, както може би си мислите, че го правят.

Можете да направите това с толкова "последователно", колкото можете да получите с API за "насипни" операции или друга форма на "групова" актуализация. В рамките на разумното разбира се, а също и обратно:

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

bulk.execute();

Не е гаранция, че нищо друго няма да се опита да промени, но е толкова близо, колкото ще получите в момента.

Вижте също необработената команда „актуализация“ с множество документи.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как се свързвате с репликасет от обвивка на MongoDB?

  2. Замяна на вграден документ в масив в MongoDB

  3. Съхраняване на приятелски отношения в MongoDB?

  4. Използване на map/reduce за картографиране на свойствата в колекция

  5. Как да разположите Percona Server за MongoDB за висока наличност