आपको MongoDB के findAndModify कमांड का उपयोग करना होगा। इसके साथ, आप परमाणु रूप से किसी फ़ील्ड का चयन और वृद्धि कर सकते हैं।
db.seq.findAndModify({
query: {"_id": "users"},
update: {$inc: {"seq":1}},
new: true
});
यह users
. के लिए एक काउंटर में वृद्धि करेगा संग्रह, जिसे आप सम्मिलन से पहले दस्तावेज़ में जोड़ सकते हैं। चूंकि यह परमाणु है, इसलिए आपको दौड़ की स्थिति के बारे में चिंता करने की ज़रूरत नहीं है जिसके परिणामस्वरूप परस्पर विरोधी आईडी हो सकते हैं।
यह MySQL के auto_increment
. की तरह सहज नहीं है ध्वज, लेकिन आपके पास आमतौर पर अपने मोंगो ड्राइवर में अपनी खुद की आईडी फैक्ट्री निर्दिष्ट करने का विकल्प भी होता है, ताकि आप एक ऐसा कारखाना लागू कर सकें जो आईडी को पारदर्शी रूप से बढ़ाने और वापस करने के लिए findAndModify का उपयोग करता है, जिसके परिणामस्वरूप बहुत अधिक MySQL जैसा अनुभव होता है।
इस दृष्टिकोण का नकारात्मक पक्ष यह है कि चूंकि प्रत्येक प्रविष्टि आपके अनुक्रम संग्रह पर एक लेखन लॉक पर निर्भर है, यदि आप बहुत सारे लेखन कर रहे हैं, तो आप उस पर बहुत जल्दी बाधा डाल सकते हैं। यदि आप केवल यह गारंटी देना चाहते हैं कि संग्रह में दस्तावेज़ सम्मिलन क्रम में क्रमबद्ध हैं, तो कैप्ड संग्रह देखें।