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.