$isolated
взема заключване на запис, докато записът завърши или срещне грешка, и не дава заключването по време на обработка. Това предотвратява други четения и записи. Това не осигурете атомарност „всичко или нищо“, тъй като, ако възникне грешка в 32756-ия документ, предишните 32755 актуализации ще останат. Няма връщане назад; актуализацията не е атомна. Актуализацията е изолирана.
Това обаче няма да помогне на OP, тъй като неговата собствена актуализация премества документи (чрез $push
) и ги кара да бъдат ударени два пъти. Използвайте сортиране на индексирано поле; винаги имате _id
.