Kesalahannya cukup banyak karena Anda tidak dapat bertindak pada dua hal dari "jalur" yang sama dalam operasi pembaruan yang sama. Kedua operator yang Anda gunakan tidak memproses secara berurutan seperti yang Anda kira.
Anda dapat melakukan ini dengan "berurutan" seperti yang mungkin Anda dapatkan dengan API operasi "massal" atau bentuk pembaruan "massal" lainnya. Tentu saja dengan alasan, dan juga sebaliknya:
var bulk = db.coll.initializeOrderedBulkOp();
bulk.find({ "tags": 1 }).updateOne({ "$addToSet": { "tags": 2 } });
bulk.find({ "tags": 1 }).updateOne({ "$pull": { "tags": 1 } });
bulk.execute();
Bukan jaminan bahwa tidak ada hal lain yang akan mencoba untuk memodifikasi, tetapi itu sedekat yang akan Anda dapatkan saat ini.
Lihat juga perintah "perbarui" mentah dengan banyak dokumen.