Ще вляза в това с общото предупреждение, че признавам, че дори не съм погледнал резултатите, но основните принципи ми се струват валидни от самото начало.
Това, което трябва да обмислите тук, е "какво всъщност се случва под капака" на "хубавата синтактична захар", която ви се представя в общите разговори. Това означава основно да се види какво всъщност прави "командната форма" на операциите, които извиквате. В този случай "актуализация" .
Така че, ако вече сте разгледали тази връзка, помислете за следното "Групово " формуляр за актуализиране:
var bulk = db.collection.initializeOrdedBulkOp();
bulk.find({ "_id": 1 }).updateOne({ "$set": { "a": 1 } });
bulk.find({ "_id": 2 }).updateOne({ "$set": { "b": 2 } });
bulk.execute();
Сега вече знаете, че това се изпраща до сървъра като едно заявка, но това, което вероятно не обмисляте, е, че действителната „заявка“, направена „под капака“, всъщност е следната:
db.runCommand({
"update": "collection",
"updates": [
{ "q": { "_id": 1 }, "u": { "$set": { "a": 1 } } },
{ "q": { "_id": 2 }, "u": { "$set": { "b": 2 } } }
],
"ordered": true
})
Следователно е логично това, което действително виждате в регистрационните файлове под операцията „актуализация“, всъщност да е нещо като (съкратено от пълен изход само до заявката):
{ "q": { "_id": 1 }, "u": { "$set": { "a": 1 } } }
{ "q": { "_id": 2 }, "u": { "$set": { "b": 2 } } }
Което следователно означава, че всяко от тези действия с асоциираната команда е в oplog за „повторно възпроизвеждане“ при репликация и/или при други действия, които може да извършите, като конкретно „повторно възпроизвеждане“ на записите в oplog.
Бих бил сигурен, че това всъщност се случва, без дори да гледам, защото знам, че това е начинът, по който драйверите изпълняват действителните повиквания и има смисъл всяко повикване да се съхранява в oplog по този начин.
Следователно "като цяло", тогава не. Това не са „транзакции“ и винаги са отделни операции, дори ако подаването и връщането им са в рамките на една заявка. Но не са единична операция и следователно няма и не трябва да се записва като такава.