sql >> Databáze >  >> NoSQL >> MongoDB

Vytáhněte a přidejte to současně s mongo

Chyba je do značné míry to, co znamená, protože nemůžete jednat se dvěma věcmi stejné "cesty" ve stejné operaci aktualizace. Dva operátory, které používáte, nezpracovávají sekvenčně, jak byste si mohli myslet.

Můžete to udělat tak „sekvenčně“, jak jen můžete získat pomocí API pro „hromadné“ operace nebo jiné formy „hromadné“ aktualizace. Samozřejmě v rámci rozumu a také obráceně:

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

bulk.execute();

Není zaručeno, že se nic jiného nepokusí upravit, ale je to tak blízko, jak se aktuálně dostanete.

Podívejte se také na nezpracovaný příkaz "update" s více dokumenty.



  1. Přeložte Queryable<T> zpět do IMongoQuery

  2. Nejlepší postupy pro provozování MongoDB v clusteru

  3. Získání MongoDB v Linuxu pro poslech vzdálených připojení

  4. Co je práce Map Only v Hadoopu?