Hej, den eneste måde, som jeg tror nu, er at tilføje en statusparameter og bruge operationen findAndModify(), som gør det muligt for dig at atomisk modificere et dokument. Det er lidt langsommere, men burde gøre det trick.
Så lad os sige, at du tilføjer en statusattribut, og når du henter dokumentet, ændrer du status fra "IDLE" til "BEHANDLER". Derefter opdaterer du dokumentet og gemmer det tilbage til samlingen og opdaterer status til "IDLE" igen.
Kodeeksempel:
var doc = db.runCommand({
"findAndModify" : "COLLECTION_NAME",
"query" : {"_id": "ID_DOCUMENT", "status" : "IDLE"},
"update" : {"$set" : {"status" : "RUNNING"} }
}).value
Skift COLLECTION_NAME og ID_DOCUMENT til en korrekt værdi. FindAndModify() returnerer som standard den gamle værdi, hvilket betyder, at statusværdien stadig vil være IDLE på klientsiden. Så når du er færdig med at opdatere, skal du bare gemme/opdatere alt igen.
Den eneste tanke, du skal være opmærksom på, er, at du kun kan ændre ét dokument ad gangen.
Håber det hjælper.