MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Nie można zablokować dokumentu mongodb. A jeśli muszę?

Hej, teraz myślę, że jedynym sposobem jest dodanie parametru status i użycie operacji findAndModify(), która umożliwia niepodzielną modyfikację dokumentu. Jest trochę wolniejszy, ale powinien wystarczyć.

Załóżmy więc, że dodajesz atrybut statusu i po pobraniu dokumentu zmieniasz status z „BEZCZYNNY” na „PRZETWARZANIE”. Następnie aktualizujesz dokument i zapisujesz go z powrotem w kolekcji, ponownie aktualizując status na „BEZCZYNNY”.

Przykład kodu:

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

Zmień COLLECTION_NAME i ID_DOCUMENT na prawidłową wartość. Domyślnie findAndModify() zwraca starą wartość, co oznacza, że ​​po stronie klienta wartość statusu będzie nadal BEZCZYNNA. Więc kiedy skończysz aktualizować, po prostu zapisz/zaktualizuj wszystko ponownie.

Jedyne, co musisz wiedzieć, to to, że możesz modyfikować tylko jeden dokument na raz.

Mam nadzieję, że to pomoże.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. używa czasu utworzenia mongodb ObjectId

  2. Mongoose.js:Znajdź użytkownika według nazwy użytkownika LIKE wartość

  3. Monitorowanie wydajności i kondycji ClusterControl

  4. Zapytanie o dokument i wszystkie jego dokumenty podrzędne, które pasują do warunku w mongodb (przy użyciu wiosny)

  5. MongoDB C# Driver - Ignoruj ​​pola podczas wiązania