কম্পিউটার টিউটোরিয়াল

MongoDB-এ ইউনিক ইন্ডেক্স (Unique Index) দিয়ে ডুপ্লিকেট ইনসার্ট রোধ করা


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" }

শুধু দুটি ইউনিক ডকুমেন্ট সংরক্ষিত হয়েছে। ডুপ্লিকেট রিজেক্ট হয়েছে।


  1. জাভাস্ক্রিপ্টে একই অ্যারেতে অ্যারের এলিমেন্টগুলো ডুপ্লিকেট করা

  2. MongoDB-এ গড় (Average) এর চেয়ে বড় মান वाले ডকুমেন্ট বের করা

  3. MongoDB-তে ন্যাচারেল অর্ডার দিয়ে সর্ট করা এবং আইটেমগুলো রিভার্স করা

  4. MySQL-এ একই নামের ছাত্রদের স্কোর যোগফল (SUM) GROUP BY ও ORDER BY সহ