$isolated
tar ett skrivlås tills skrivningen slutförs eller stöter på ett fel, och det ger inte låset under bearbetning. Detta förhindrar andra läsningar och skrivningar. Det gör den inte ge allt-eller-inget atomicitet eftersom, om ett fel inträffar i det 32756:e dokumentet, kommer de tidigare 32755-uppdateringarna att finnas kvar. Det finns ingen återställning; uppdateringen är inte atomär. Uppdateringen är isolerad.
Detta kommer dock inte att hjälpa OP, eftersom det är hans egen uppdatering som flyttar dokument (via $push
) och får dem att träffas två gånger. Använd en sortering på ett indexerat fält; du har alltid _id
.