Грешката е до голяма степен това, което означава, тъй като не можете да действате върху две неща от един и същи "път" в една и съща операция за актуализиране. Двата оператора, които използвате, не обработват последователно, както може би си мислите, че го правят.
Можете да направите това с толкова "последователно", колкото можете да получите с API за "насипни" операции или друга форма на "групова" актуализация. В рамките на разумното разбира се, а също и обратно:
var bulk = db.coll.initializeOrderedBulkOp();
bulk.find({ "tags": 1 }).updateOne({ "$addToSet": { "tags": 2 } });
bulk.find({ "tags": 1 }).updateOne({ "$pull": { "tags": 1 } });
bulk.execute();
Не е гаранция, че нищо друго няма да се опита да промени, но е толкова близо, колкото ще получите в момента.
Вижте също необработената команда „актуализация“ с множество документи.