$isolated
prend un verrou en écriture jusqu'à ce que l'écriture se termine ou rencontre une erreur, et il ne produit pas le verrou pendant le traitement. Cela empêche d'autres lectures et écritures. Ce n'est pas fournir une atomicité tout ou rien car, si une erreur se produit sur le 32756e document, les 32755 mises à jour précédentes resteront. Il n'y a pas de retour en arrière ; la mise à jour n'est pas atomique. La mise à jour est isolée.
Cela n'aidera cependant pas l'OP, car c'est sa propre mise à jour qui déplace les documents (via $push
) et les faisant être frappés deux fois. Utiliser un tri sur un champ indexé ; vous avez toujours _id
.