sql >> Database >  >> NoSQL >> MongoDB

Trek en voeg tegelijkertijd toe met mongo

De fout is zo ongeveer wat het betekent, omdat je niet kunt handelen op twee dingen van hetzelfde "pad" in dezelfde update-bewerking. De twee operators die u gebruikt, verwerken niet opeenvolgend zoals u zou denken.

U kunt dit echter zo "sequentieel" doen als mogelijk is met de "bulk"-bewerkingen-API of een andere vorm van "bulk" -update. Binnen redelijke grenzen natuurlijk, en ook omgekeerd:

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

bulk.execute();

Geen garantie dat niets anders zal proberen te wijzigen, maar het is zo dichtbij als je momenteel zult krijgen.

Zie ook de onbewerkte "update"-opdracht met meerdere documenten.



  1. Mongodb sorteren met hoofdletterongevoelige manier

  2. Redis-interacties in javascript stoppen met Sinon

  3. Ontvang een melding voor gewijzigde documenten in mongodb

  4. Behouden arrays die zijn opgeslagen in MongoDB hun volgorde?