sql >> Databasteknik >  >> NoSQL >> MongoDB

Det går inte att låsa ett mongodb-dokument. Vad händer om jag behöver?

Hej, det enda sättet som jag tror nu är att lägga till en statusparameter och använda operationen findAndModify(), som gör att du kan atomiskt modifiera ett dokument. Det är lite långsammare, men borde göra susen.

Så låt oss säga att du lägger till ett statusattribut och när du hämtar dokumentet ändrar status från "IDLE" till "BEHANDLING". Sedan uppdaterar du dokumentet och sparar det tillbaka till samlingen och uppdaterar statusen till "IDLE" igen.

Kodexempel:

var doc = db.runCommand({
              "findAndModify" : "COLLECTION_NAME",
              "query" : {"_id": "ID_DOCUMENT", "status" : "IDLE"},
              "update" : {"$set" : {"status" : "RUNNING"} }
}).value

Ändra COLLECTION_NAME och ID_DOCUMENT till ett korrekt värde. Som standard returnerar findAndModify() det gamla värdet, vilket betyder att statusvärdet fortfarande är IDLE på klientsidan. Så när du är klar med uppdateringen är det bara att spara/uppdatera allt igen.

Det enda du behöver vara medveten om är att du bara kan ändra ett dokument åt gången.

Hoppas det hjälper.



  1. Hur man använder MongoRegex (MongoDB C#-drivrutin)

  2. Finns det ett bra sätt att stödja popmedlemmar från Redis Sorted Set?

  3. Så här gör du:Hantera HBase-data via Hue

  4. Uppdatering av ett stort antal poster i en samling