Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में अनुक्रम संशोधित करें

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 मुख्य डेटा के लिए।

  1. - MongoDB में ({$natural: 1}) क्या है?

    ({$natural: -1}) LIFO (LAST IN FIRST OUT) की तरह काम करता है, यानी अंतिम इन्सर्ट किया गया दस्तावेज़ पहले दिखाया जाएगा। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo614.insertOne({"CountryName":"US"}); {    "acknowledged" : true,    "ins

  1. - MongoDB में _id फील्ड छिपाएं

    आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo575.insertOne({id:101,Information:{Name:Chris,Age:21}}); { acknowledged : true, insertedId : ObjectId(5e916a55581e9acd78b427f7) } > db.demo575.insertOne({id:102,Information:{Name:David,Age:20}}); { acknowledged : true, insertedId : ObjectId

  1. - MongoDB में मास इंसर्शन (थोक सम्मिलन)

    मास इंसर्शन के लिए MongoDB में insertMany() की अवधारणा का उपयोग करें। insertMany() एक कलेक्शन में कई डॉक्यूमेंट्स डालता है। आइए डॉक्यूमेंट्स के साथ एक कलेक्शन बनाते हैं: > db.demo729.insertMany( [ ... { BankName:HDFC Bank,cardType:Credit,CustomerName:[{Name:Chris,Age:25}]}, ... { BankName:ICICI