ensureIndex() এবং unique:true ব্যবহার করে ডুপ্লিকেট এন্ট্রি প্রতিরোধ
MongoDB-এ একটি ফিল্ডে ডুপ্লিকেট মান ইনসার্ট না হওয়া দিতে ensureIndex() (বা আধুনিক ভার্সনে createIndex()) দিয়ে ইউনিক ইন্ডেক্স তৈরি করা হয়।
১. ইউনিক ইন্ডেক্স তৈরি করা
> db.demo316.ensureIndex({"SubjectName":1},{unique:true});
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
ব্যাখ্যা: {unique:true} অপশনটি এই ফিল্ডে ডুপ্লিকেট মান নিষিদ্ধ করে।
২. ডকুমেন্ট ইনসার্ট করা (ডুপ্লিকেট চেষ্টা সহ)
> 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"});
2020-02-22T13:47:05.186+0530 E QUERY [js] WriteError: E11000 duplicate key error collection: test.demo316 index: SubjectName_1 dup key: { : "MongoDB" }
ফলাফল: তৃতীয় ইনসার্টে E11000 duplicate key error দেখায় কারণ "MongoDB" ইতিমধ্যে আছে।
৩. বর্তমান ডকুমেন্টগুলো
> db.demo316.find();
আউটপুট:
{ "_id" : ObjectId("5e50e378f8647eb59e56205d"), "SubjectName" : "MySQL" }
{ "_id" : ObjectId("5e50e37df8647eb59e56205e"), "SubjectName" : "MongoDB" }
শুধু দুটি ইউনিক ডকুমেন্ট সংরক্ষিত হয়েছে। ডুপ্লিকেট রিজেক্ট হয়েছে।