MongoDB में findAndModify का उपयोग करके ऑटो-इंक्रीमेंट सीक्वेंस बनाना
MongoDB में ऑटो-इंक्रीमेंट फ़ील्ड (सीक्वेंस) के लिए findAndModify() (या आधुनिक findOneAndUpdate()) का उपयोग करके एटॉमिक काउंटर लागू किया जा सकता है।
सैंपल डेटा बनाना
> db.demo261.insertOne({_id:100, Name:"Chris"});
{ "acknowledged" : true, "insertedId" : 100 }
दस्तावेज़ देखना
> db.demo261.find();
आउटपुट:
सीक्वेंस कलेक्शन और फंक्शन बनाना
फंक्शन का उपयोग करके दस्तावेज़ इंसर्ट करना
अंतिम दस्तावेज़ देखना
{ "_id" : 100, "Name" : "Chris" } { "_id" : 1, "Name" : "Chris" } { "_id" : 2, "Name" : "Bob" }आधुनिक विकल्प: findOneAndUpdate (MongoDB 3.2+)
एटॉमिसिटी गारंटी
findAndModify/findOneAndUpdate**एटॉमिक** हैं - रेस कंडीशन नहींnew: true/returnDocument: "after"अपडेटेड मान लौटाता हैupsert: trueकाउंटर दस्तावेज़ न होने पर बनाता है
उत्पादन विचार
- हाई-थ्रूपुट के लिए,
sequence_valueको बड़े चरणों में बढ़ाएं (उदाहरण: 1000) और एप्लिकेशन में कैश करें - शार्डेड क्लस्टर में, सीक्वेंस कलेक्शन को अनशार्डेड रखें या शार्ड की का उपयोग करें
- ObjectId में पहले से टाइमस्टैम्प + रैंडमनेस होती है, अक्सर कस्टम सीक्वेंस अनावश्यक होता है
नोट
उदाहरण में demo262 कलेक्शन सीक्वेंस काउंटर के लिए उपयोग किया जाता है, demo261 मुख्य डेटा के लिए।