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

MongoDB ट्रांजैक्शन और डुप्लिकेट मानों के लिए इंडेक्स

MongoDB में यूनिक इंडेक्स का उपयोग करके सरणी फ़ील्ड में डुप्लिकेट मान रोकना

MongoDB में ensureIndex() (अब createIndex()) के साथ unique: true विकल्प का उपयोग करके सरणी फ़ील्ड में डुप्लिकेट मानों को रोका जा सकता है।

नमूना डेटा और इंडेक्स बनाना

> db.demo298.save({Name: 'Chris', Marks: [46, 79] });
WriteResult({ "nInserted" : 1 })
> db.demo298.save({Name: 'David', Marks: [67, 88] });
WriteResult({ "nInserted" : 1 })
> db.demo298.ensureIndex({ Marks: 1 }, {unique: 1});
{ "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
> db.demo298.save({Name: 'Mike', Marks: [88,98] });
WriteResult({
    "nInserted" : 0,
    "writeError" : {
        "code" : 11000,
        "errmsg" : "E11000 duplicate key error collection: test.demo298 index: Marks_1 dup key: { : 88.0 }"
    }
})

सभी दस्तावेज़ प्रदर्शित करना

> db.demo298.find();

आउटपुट:

{ "_id" : ObjectId("5e4d56e55d93261e4bc9ea48"), "Name" : "Chris", "Marks" : [ 46, 79 ] }
{ "_id" : ObjectId("5e4d56f55d93261e4bc9ea49"), "Name" : "David", "Marks" : [ 67, 88 ] }

व्याख्या

  • ensureIndex({ Marks: 1 }, {unique: 1}) - Marks फ़ील्ड पर आरोही (1) यूनिक इंडेक्स बनाता है।
  • चूंकि Marks एक सरणी है, MongoDB सरणी के **प्रत्येक तत्व** को इंडेक्स करता है (मल्टीकी इंडेक्स)।
  • तीसरा दस्तावेज़ {Name: 'Mike', Marks: [88,98]} डालने पर त्रुटि होती है क्योंकि 88 पहले से मौजूद है (David के Marks में)।
  • त्रुटि कोड 11000 डुप्लिकेट की त्रुटि दर्शाता है।

महत्वपूर्ण विचार

  • सरणी फ़ील्ड पर यूनिक इंडेक्स का अर्थ है कि **कोई भी दो दस्तावेज़ सरणी में समान मान साझा नहीं कर सकते**।
  • एक ही दस्तावेज़ की सरणी में डुप्लिकेट मान अनुमत हैं (जब तक वे अन्य दस्तावेज़ों में मौजूद नहीं हैं)।
  • MongoDB 3.0+ में createIndex() का उपयोग करें, ensureIndex() पदावनत है।

यह तकनीक उन स्थितियों के लिए उपयोगी है जहां सरणी मान वैश्विक रूप से अद्वितीय होने चाहिए, जैसे टैग, श्रेणियां, या अद्वितीय पहचानकर्ता।

  1. - MongoDB एग्रीगेशन: सभी दस्तावेजों में विशिष्ट मानों की गिनती

    इसके लिए MongoDB में aggregate() का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo718.insertOne({ id:101, details: { OtherDetails: [Chris, Mike, Sam], GroupName: [Group-1], Info: [] } }); { acknowledged : true, insertedId : ObjectId(5eaae258

  1. - MongoDB क्वेरी: फील्ड मानों में "@email" जैसे स्ट्रिंग की खोज करें

    MongoDB find() का उपयोग करके ईमेल स्ट्रिंग खोजें। आइए एक कलेक्शन बनाते हैं: > db.demo727.insertOne({UserId:John@email.com}); { acknowledged : true, insertedId : ObjectId(5eab375f43417811278f5898) } > db.demo727.insertOne({UserId:John@yahoo.com}); { acknowledged : true, insertedId : ObjectId(5

  1. - MongoDB में विशिष्ट तत्वों के लिए अधिकतम मान कैसे प्राप्त करें?

    विशिष्ट तत्वों के लिए अधिकतम मान प्राप्त करने के लिए MongoDB aggregate() में $sort और $group का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo750.insertOne({id:101,value:50}); { acknowledged : true, insertedId : ObjectId(5eae74b2a930c785c834e566) } > db.demo750.insertOne({id:102,value:40});