sql >> Database teknologi >  >> NoSQL >> MongoDB

Det er ikke muligt at låse et mongodb-dokument. Hvad hvis jeg har brug for det?

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.



  1. Java MongoDB Objektversionering

  2. Kan MongoDB aggregeringsramme $group returnere en række værdier?

  3. Føj data til eksisterende gridfs-fil

  4. Tjek MongoDB-godkendelse med Java 3.0-driver