MongoDB-এ কোনো ফিল্ডকে ইউনিক (unique) করতে createIndex() মেথডে unique: true অপশন ব্যবহার করা হয়। এটি ডুপ্লিকেট মান ইনসার্ট করা থেকে রোধ করে।
ইউনিক ইনডেক্স তৈরি এবং ডকুমেন্ট ইনসার্ট
> db.demo82.createIndex({"EmployeeName":1},{unique:true});
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
> db.demo82.insertOne({"EmployeeName":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2bfb1b71bf0181ecc422a0") }
> db.demo82.insertOne({"EmployeeName":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2bfb1f71bf0181ecc422a1") }
> db.demo82.insertOne({"EmployeeName":"Chris"});
2020-01-25T13:54:00.410+0530 E QUERY [js] WriteError: E11000 duplicate key error collection: test.demo82 index: EmployeeName_1 dup key: { : "Chris" }
তৃতীয় ইনসার্টে ডুপ্লিকেট এরর দেখা যাচ্ছে (E11000)।
সব ডকুমেন্ট দেখানো
> db.demo82.find();
আউটপুট (ডুপ্লিকেট বাদ পড়ে গেছে):
{ "_id" : ObjectId("5e2bfb1b71bf0181ecc422a0"), "EmployeeName" : "Chris" }
{ "_id" : ObjectId("5e2bfb1f71bf0181ecc422a1"), "EmployeeName" : "David" }
গুরুত্বপূর্ণ পয়েন্টসমূহ:
unique: trueসেট করলে MongoDB স্বয়ংক্রিয়ভাবে ডুপ্লিকেট মান ব্লক করে- ইউনিক ইনডেক্স তৈরি করার সময় যদি কালেকশনে ইতিমধ্যে ডুপ্লিকেট মান থাকে, তবে ইনডেক্স তৈরি হবে না
dropDups: trueঅপশন (পুরানো ভার্সনে) ব্যবহার করে ডুপ্লিকেট ডিলিট করে ইনডেক্স তৈরি করা সম্ভব ছিল, কিন্তু বর্তমানে এটি ডিপ্রিকেটেড- কমপাউন্ড ইউনিক ইনডেক্সও তৈরি করা যায়:
db.collection.createIndex({field1: 1, field2: 1}, {unique: true})
ব্যবহার ক্ষেত্র: ইমেইল, ইউজারনেম, ইম্প্লয়ি আইডি ইত্যাদি যেসব ফিল্ডে ডুপ্লিকেট নেই তা নিশ্চিত করার জন্য।