Hé, de enige manier waarvan ik denk dat het nu is om een statusparameter toe te voegen en de bewerking findAndModify() te gebruiken, waarmee je een document atomair kunt wijzigen. Het is een beetje langzamer, maar zou het lukken.
Laten we dus zeggen dat u een statuskenmerk toevoegt en wanneer u het document ophaalt, de status wijzigt van "IDLE" in "VERWERKING". Vervolgens werkt u het document bij en slaat u het weer op in de collectie, waarbij u de status opnieuw wijzigt naar "IDLE".
Codevoorbeeld:
var doc = db.runCommand({
"findAndModify" : "COLLECTION_NAME",
"query" : {"_id": "ID_DOCUMENT", "status" : "IDLE"},
"update" : {"$set" : {"status" : "RUNNING"} }
}).value
Wijzig de COLLECTION_NAME en ID_DOCUMENT in een juiste waarde. Standaard retourneert findAndModify() de oude waarde, wat betekent dat de statuswaarde nog steeds IDLE is aan de clientzijde. Dus als u klaar bent met updaten, slaat u alles opnieuw op/werkt u het opnieuw bij.
Het enige dat u moet weten, is dat u slechts één document tegelijk kunt wijzigen.
Ik hoop dat het helpt.