$isolated
accetta un blocco di scrittura finché la scrittura non viene completata o rileva un errore e non restituisce il blocco durante l'elaborazione. Ciò impedisce altre letture e scritture. non fornire l'atomicità tutto o niente perché, se si verifica un errore nel documento 32756, i precedenti aggiornamenti 32755 rimarranno. Non c'è rollback; l'aggiornamento non è atomico. L'aggiornamento è isolato.
Ciò non aiuterà l'OP, tuttavia, poiché è il suo stesso aggiornamento che sta spostando i documenti (tramite $push
) e facendoli colpire due volte. Usa un ordinamento su un campo indicizzato; hai sempre _id
.