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

MongoDB में फिक्स्ड वैल्यू फ़ील्ड के साथ कंपाउंड इंडेक्स सेट करें

MongoDB में कंपाउंड यूनिक इंडेक्स बनाना

कंपाउंड इंडेक्स एकाधिक फ़ील्ड्स पर बनाया जाता है। unique: true के साथ, इंडेक्स कीड फ़ील्ड्स का **संयोजन** यूनिक होना चाहिए, व्यक्तिगत फ़ील्ड्स नहीं।

कंपाउंड यूनिक इंडेक्स बनाना

> db.compoundIndexDemo.createIndex(
    {"StudentName":1, "StudentAge":1},
    {unique:true}
);
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }

दस्तावेज़ डालना

> db.compoundIndexDemo.insertOne({"StudentName":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e084c1d25ddae1f53b62207") }
> db.compoundIndexDemo.insertOne({"StudentName":"Chris","StudentAge":23});
{ "acknowledged" : true, "insertedId" : ObjectId("5e084c5625ddae1f53b62209") }
> db.compoundIndexDemo.insertOne({"StudentName":"Chris","StudentAge":22});
{ "acknowledged" : true, "insertedId" : ObjectId("5e084c5b25ddae1f53b6220a") }

डुप्लिकेट संयोजन डालने का प्रयास (त्रुटि)

> db.compoundIndexDemo.insertOne({"StudentName":"Chris","StudentAge":23});
2019-12-29T12:19:02.225+0530 E QUERY [js] WriteError: E11000 duplicate key error collection: web.compoundIndexDemo index: StudentName_1_StudentAge_1 dup key: { : "Chris", : 23.0 }
WriteError({ "index" : 0, "code" : 11000, "errmsg" : "E11000 duplicate key error collection: web.compoundIndexDemo index: StudentName_1_StudentAge_1 dup key: { : \"Chris\", : 23.0 }", ... })

दस्तावेज़ देखना

> db.compoundIndexDemo.find().pretty();

आउटपुट:


मुख्य अवधारणा: कंपाउंड यूनिकनेस

दस्तावेज़StudentNameStudentAgeसंयोजनअनुमत?
1Chris(अनुपस्थित)("Chris", null)हां
2Chris23("Chris", 23)हां
3Chris22("Chris", 22)हां
4Chris23("Chris", 23)नहीं - डुप्लिकेट

"फिक्स्ड वैल्यू फ़ील्ड" का अर्थ

शीर्षक में "फिक्स्ड वैल्यू फ़ील्ड" का अर्थ है कि एक फ़ील्ड (StudentName) कई दस्तावेज़ों में समान हो सकती है, लेकिन **संयोजन** यूनिक होना चाहिए। यह "आंशिक यूनिकनेस" जैसा व्यवहार करता है।

उपयोग के मामले

  • यूज़र + रोल संयोजन यूनिक होना चाहिए
  • ऑर्डर + प्रोडक्ट संयोजन यूनिक (डुप्लिकेट ऑर्डर लाइन रोकें)
  • ईमेल + टेनेंट संयोजन (मल्टी-टेनेंसी)

स्पार्स कंपाउंड इंडेक्स

यह null/अनुपस्थित फ़ील्ड्स वाले दस्तावेज़ों को इंडेक्स से बाहर रखता है।

  1. - MongoDB में प्रत्येक कर्मचारी के वेतन को 10% बढ़ाना

    MongoDB में $mul ऑपरेटर का उपयोग करके संख्यात्मक फील्ड को प्रतिशत से बढ़ाना MongoDB में किसी संख्यात्मक फील्ड को एक गुणक से बढ़ाने के लिए $mul ऑपरेटर का उपयोग करें। यह वेतन वृद्धि, मूल्य समायोजन आदि के लिए उपयोगी है। उदाहरण: संग्रह और दस्तावेज़ बनाना > db.demo417.insertOne({EmployeeName:Chris,Em

  1. - MongoDB save() मेथड में वेरिएबल वैल्यू कैसे सेट करें?

    MongoDB में वेरिएबल वैल्यू सेट करने के लिए db.yourCollectionName.save(yourVariableName) का उपयोग करें, जहां yourVariableName आपका वेरिएबल है। उदाहरण: वेरिएबल बनाना और सेव करना आइए एक वेरिएबल बनाते हैं और उसे कलेक्शन में सेव करते हैं: var Info={Name:David, CountryName:US, ProjectDetails:[{ClientNam

  1. - MongoDB Aggregation - Specific Field Value वाले Documents Fetch करना

    इसके लिए aggregate() का उपयोग करें। मान लें हमें field Age value 21 वाले documents fetch करने हैं। Collection बनाना > db.demo685.insertOne( ... { ... details: ... [ ... { Name:Chris, Age:21 }, ... { Name:David, Age:23 }, ... { Name:Bob, Age:21 } ... ] ... } ...