MongoDB में यूनिक इंडेक्स के साथ डुप्लिकेट रोकना
किसी फ़ील्ड में डुप्लिकेट मानों को रोकने के लिए, उस फ़ील्ड पर यूनिक इंडेक्स बनाएं। MongoDB तब किसी भी इंसर्ट या अपडेट को अस्वीकार कर देगा जो डुप्लिकेट मान बनाने का प्रयास करता है।
यूनिक इंडेक्स बनाना
ensureIndex() (विरासत) या आधुनिक createIndex() का उपयोग करें:
> db.demo316.ensureIndex({"SubjectName": 1}, {unique: true});
{ "createdCollectionAutomatically": true, "numIndexesBefore": 1, "numIndexesAfter": 2, "ok": 1 }
डेटा डालना
> db.demo316.insertOne({"SubjectName": "MySQL"});
{ "acknowledged": true, "insertedId": ObjectId("5e50e378f8647eb59e56205d") }
> db.demo316.insertOne({"SubjectName": "MongoDB"});
{ "acknowledged": true, "insertedId": ObjectId("5e50e37df8647eb59e56205e") }
डुप्लिकेट डालने का प्रयास
> db.demo316.insertOne({"SubjectName": "MongoDB"});
WriteError: E11000 duplicate key error collection: test.demo316 index: SubjectName_1 dup key: { : "MongoDB" }
MongoDB E11000 डुप्लिकेट की त्रुटि फेंकता है और इंसर्ट विफल हो जाता है।
मौजूदा डेटा देखना
> db.demo316.find();
{ "_id": ObjectId("5e50e378f8647eb59e56205d"), "SubjectName": "MySQL" }
{ "_id": ObjectId("5e50e37df8647eb59e56205e"), "SubjectName": "MongoDB" }
केवल अद्वितीय मान संग्रहीत किए गए। नोट: यूनिक इंडेक्स बनाने से पहले सुनिश्चित करें कि संग्रह में पहले से डुप्लिकेट मान नहीं हैं, अन्यथा इंडेक्स निर्माण विफल हो जाएगा।