sql >> Databáze >  >> NoSQL >> MongoDB

Není možné zamknout dokument mongodb. Co když budu potřebovat?

Hej, jediný způsob, jak si teď myslím, je přidat parametr status a použít operaci findAndModify(), která vám umožní atomicky upravit dokument. Je to trochu pomalejší, ale mělo by to stačit.

Řekněme tedy, že přidáte atribut stavu a při načítání dokumentu změníte stav z „NEČINNÁ“ na „ZPRACOVÁVÁ SE“. Poté dokument aktualizujete a uložíte zpět do kolekce, přičemž stav se znovu změní na „NEČINNÝ“.

Příklad kódu:

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

Změňte COLLECTION_NAME a ID_DOCUMENT na správnou hodnotu. Ve výchozím nastavení funkce findAndModify() vrací starou hodnotu, což znamená, že hodnota stavu bude na straně klienta stále NEČINNÁ. Takže až budete s aktualizací hotovi, vše znovu uložte/aktualizujte.

Jediné, co si musíte být vědomi, je, že můžete upravovat pouze jeden dokument najednou.

Doufám, že to pomůže.



  1. Jak vytvořit indexy v MongoDB přes .NET

  2. Mongoose limit/offset a dotaz na počet

  3. Jak se správně připojit ke clusteru Atlas M0 (Free Tier) pomocí ovladače Java?

  4. Chyba pole v objektu 'cíl' na poli '':zamítnutá hodnota []; kódy [typeMismatch.target.,typeMismatch.,typeMismatch.java.util.Date,typeMismatch]