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

MongoDB में इंडेक्स के साथ एकाधिक फील्ड्स के डुप्लिकेट रोकें

कम्पाउंड यूनिक इंडेक्स के साथ डुप्लिकेट रोकना

एकाधिक फील्ड्स के डुप्लिकेट रोकने के लिए, ensureIndex() का उपयोग करें और unique: true सेट करें।

कलेक्शन और इंडेक्स बनाना

> db.demo272.ensureIndex({"FirstName":1,"Subject":1},{unique:true});
{ "createdCollectionAutomatically": true, "numIndexesBefore": 1, "numIndexesAfter": 2, "ok": 1 }

डॉक्यूमेंट्स इन्सर्ट करना

> db.demo272.insertOne({"FirstName":"Chris","Subject":"MySQL"});
{ "acknowledged": true, "insertedId": ObjectId("5e48232a1627c0c63e7dbabf") }
> db.demo272.insertOne({"FirstName":"Chris","Subject":"MongoDB"});
{ "acknowledged": true, "insertedId": ObjectId("5e48232f1627c0c63e7dbac0") }
> db.demo272.insertOne({"FirstName":"David","Subject":"MySQL"});
{ "acknowledged": true, "insertedId": ObjectId("5e48233a1627c0c63e7dbac1") }
> db.demo272.insertOne({"FirstName":"Chris","Subject":"MySQL"});
2020-02-15T22:28:55.137+0530 E QUERY [js] WriteError: E11000 duplicate key error collection: test.demo272 index: FirstName_1_Subject_1 dup key: { : "Chris", : "MySQL" }

परिणाम देखना

> db.demo272.find();

आउटपुट (डुप्लिकेट अस्वीकृत):

{ "_id": ObjectId("5e48232a1627c0c63e7dbabf"), "FirstName": "Chris", "Subject": "MySQL" }
{ "_id": ObjectId("5e48232f1627c0c63e7dbac0"), "FirstName": "Chris", "Subject": "MongoDB" }
{ "_id": ObjectId("5e48233a1627c0c63e7dbac1"), "FirstName": "David", "Subject": "MySQL" }

मुख्य बिंदु

  • कम्पाउंड इंडेक्स: {"FirstName":1,"Subject":1} दोनों फील्ड्स के संयोजन पर यूनिकनेस लागू करता है
  • unique: true: डुप्लिकेट संयोजनों को रोकता है
  • E11000 एरर: डुप्लिकेट कुंजी होने पर फेंका जाता है
  • Chris-MySQL संयोजन दोबारा इन्सर्ट करने पर एरर आया

नोट: आधुनिक MongoDB संस्करणों में createIndex() का उपयोग करने की सलाह दी जाती है।

  1. - MongoDB में वाइल्डकार्ड का उपयोग करके नेस्टेड फील्ड्स बहिष्कृत करना

    MongoDB एग्रीगेशन में $objectToArray और $arrayToObject का उपयोग करके नेस्टेड फील्ड्स बहिष्कृत करना MongoDB में डायनामिक/अज्ञात नाम वाले नेस्टेड फील्ड्स को बहिष्कृत करने के लिए एग्रीगेशन पाइपलाइन में ऑब्जेक्ट को ऐरे में बदलें, फ़िल्टर करें, फिर वापस ऑब्जेक्ट में बदलें। उदाहरण: संग्रह और दस्तावेज़ बन

  1. - MongoDB क्वेरी: एकाधिक फ़ील्ड के अस्तित्व की जांच करें

    एकाधिक फ़ील्ड के अस्तित्व की जांच के लिए $exists के साथ $and ऑपरेटर का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo475.insertOne({"StudentFirstName":"Chris","StudentAge":23});{    "acknowledged" : true,    "inserte

  1. - MongoDB एग्रीगेशन में मल्टीपल फ़ील्ड्स द्वारा काउंट करना

    एक ही पाइपलाइन में कई फ़ील्ड्स पर काउंट करने के लिए $facet का उपयोग करें। डेमो डेटा db.demo721.insertOne({ details1: { id:101 }, details2: { id:101 }, details3: { id:101 } }); db.demo721.insertOne({ details1: { id:101 }, details2: { id:102 }, details3: { id:102 } }); क्वेरी