अरे एकमात्र तरीका जिसके बारे में मुझे लगता है कि अब एक स्थिति पैरामीटर जोड़ना है और ऑपरेशन का उपयोग करना है findAndModify(), जो आपको एक दस्तावेज़ को परमाणु रूप से संशोधित करने में सक्षम बनाता है। यह थोड़ा धीमा है, लेकिन चाल चलनी चाहिए।
तो मान लीजिए कि आप एक स्थिति विशेषता जोड़ते हैं और जब आप दस्तावेज़ को पुनः प्राप्त करते हैं तो स्थिति को "IDLE" से "प्रोसेसिंग" में बदल देते हैं। फिर आप दस्तावेज़ को अपडेट करते हैं और स्थिति को "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 रहेगा। इसलिए जब आपका काम पूरा हो जाए तो बस सब कुछ फिर से सेव/अपडेट करें।
आपको केवल एक ही विचार के बारे में पता होना चाहिए कि आप एक समय में केवल एक दस्तावेज़ को संशोधित कर सकते हैं।
आशा है कि यह मदद करता है।