MongoDB में कंपाउंड यूनिक इंडेक्स से दो फ़ील्ड का कॉम्बिनेशन यूनिक बनाएं
दो या अधिक फ़ील्ड के कॉम्बिनेशन को यूनिक बनाने के लिए कंपाउंड इंडेक्स बनाएं और unique: true सेट करें।
कंपाउंड यूनिक इंडेक्स बनाएं
> db.keepTwoColumnsUniqueDemo.createIndex(
{"StudentFirstName": 1, "StudentLastName": 1},
{unique: true}
);
{ "createdCollectionAutomatically": true, "numIndexesBefore": 1, "numIndexesAfter": 2, "ok": 1 }
डॉक्यूमेंट इन्सर्ट करें
> db.keepTwoColumnsUniqueDemo.insertOne({"StudentFirstName":"John","StudentLastName":"Smith","StudentAge":21});
{ "acknowledged": true, "insertedId": ObjectId("5cd30fd7b64f4b851c3a13e5") }
> db.keepTwoColumnsUniqueDemo.insertOne({"StudentFirstName":"John","StudentLastName":"Doe","StudentAge":23});
{ "acknowledged": true, "insertedId": ObjectId("5cd30fe5b64f4b851c3a13e6") }
डुप्लिकेट इन्सर्ट करने का प्रयास (एरर होगा)
> db.keepTwoColumnsUniqueDemo.insertOne({"StudentFirstName":"John","StudentLastName":"Smith","StudentAge":24});
WriteError: E11000 duplicate key error collection: sample.keepTwoColumnsUniqueDemo index: StudentFirstName_1_StudentLastName_1 dup key: { : "John", : "Smith" }
एरो संदेश समझें
E11000- डुप्लिकेट की एरर कोडdup key: { : "John", : "Smith" }- डुप्लिकेट वैल्यू- इंडेक्स नाम:
StudentFirstName_1_StudentLastName_1
मौजूदा डॉक्यूमेंट देखें
> db.keepTwoColumnsUniqueDemo.find().pretty();
{ "_id": ObjectId("5cd30fd7b64f4b851c3a13e5"), "StudentFirstName": "John", "StudentLastName": "Smith", "StudentAge": 21 }
{ "_id": ObjectId("5cd30fe5b64f4b851c3a13e6"), "StudentFirstName": "John", "StudentLastName": "Doe", "StudentAge": 23 }
महत्वपूर्ण नोट
- यूनिक इंडेक्स कॉम्बिनेशन पर लागू होता है, व्यक्तिगत फ़ील्ड पर नहीं
- John + Smith डुप्लिकेट है, लेकिन John + Doe अनुमत है
- पहले फ़ील्ड पर यूनिक इंडेक्स और दूसरे पर अलग इंडेक्स से अलग व्यवहार होता
- स्पार्स इंडेक्स (
sparse: true) से null वैल्यू को यूनिक चेक से बाहर कर सकते हैं