MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Не е възможно да се заключи mongodb документ. Ами ако трябва?

Хей, единственият начин, за който мисля сега, е да добавите параметър на състоянието и да използвате операцията findAndModify(), която ви позволява да променяте атомарно документ. Това е малко по-бавно, но трябва да свърши работа.

Така че да кажем, че добавяте атрибут за състояние и когато извличате документа, променяте състоянието от „ДЕЙСТВИЯ“ на „ОБРАБОТА“. След това актуализирате документа и го запазвате обратно в колекцията, като отново актуализирате състоянието на „IDLE“.

Пример за код:

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

Променете COLLECTION_NAME и ID_DOCUMENT на правилна стойност. По подразбиране findAndModify() връща старата стойност, което означава, че стойността на състоянието ще бъде все още IDLE от страна на клиента. Така че, когато приключите с актуализирането, просто запазете/актуализирайте всичко отново.

Единственото, което трябва да имате предвид, е, че можете да променяте само един документ в даден момент.

Надявам се да помогне.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Броят на Mongodb е различен с множество групови полета

  2. Най-добрият начин да се свържете с MongoDB с помощта на Node.js

  3. MongoDB отделно агрегиране

  4. MongoDB $filter

  5. Как да превключите булево поле в един документ с атомна операция?