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

MongoDB-এ ডুপ্লিকেট ছাড়া ডেটা ইনসার্ট করা

MongoDB-এ ডুপ্লিকেট রেকর্ড প্রতিরোধ করতে ইউনিক ইন্ডেক্স (unique: true) তৈরি করে upsert: true অপশন সহ insert() বা update() ব্যবহার করা হয়। ইউনিক ইন্ডেক্স একই ভ্যালু দुबারা ইনসার্ট না দেয়।

ইউনিক ইন্ডেক্স তৈরি এবং ইনসার্ট

> db.insertWithoutDuplicateDemo.createIndex(
  { "StudentFirstName": 1 }, 
  { unique: true }
);
{ "createdCollectionAutomatically": true, "numIndexesBefore": 1, "numIndexesAfter": 2, "ok": 1 }

> db.insertWithoutDuplicateDemo.insert({ "StudentFirstName": "Chris" }, { upsert: true });
WriteResult({ "nInserted": 1 })

> db.insertWithoutDuplicateDemo.insert({ "StudentFirstName": "David" }, { upsert: true });
WriteResult({ "nInserted": 1 })

> db.insertWithoutDuplicateDemo.insert({ "StudentFirstName": "Chris" }, { upsert: true });
WriteResult({ 
  "nInserted": 0, 
  "writeError": { 
    "code": 11000, 
    "errmsg": "E11000 duplicate key error collection: test.insertWithoutDuplicateDemo index: StudentFirstName_1 dup key: { : \"Chris\" }" 
  } 
})

> db.insertWithoutDuplicateDemo.insert({ "StudentFirstName": "Bob" }, { upsert: true });
WriteResult({ "nInserted": 1 })

ফলাফল যাচাই

> db.insertWithoutDuplicateDemo.find().pretty();

আউটপুট:

{ "_id": ObjectId("5e064405150ee0e76c06a054"), "StudentFirstName": "Chris" }
{ "_id": ObjectId("5e064410150ee0e76c06a055"), "StudentFirstName": "David" }
{ "_id": ObjectId("5e06441f150ee0e76c06a057"), "StudentFirstName": "Bob" }

ব্যাখ্যা:

  • createIndex(..., { unique: true }) - StudentFirstName ফিল্ডে ইউনিক ইন্ডেক্স তৈরি করে।
  • upsert: true - ডকুমেন্ট না থাকলে ইনসার্ট করে, থাকলে আপডেট করে (এখানে শুধু ইনসার্ট হয়)।
  • তৃতীয় ইনসার্টে "Chris" ডুপ্লিকেট হওয়ায় E11000 এরর দিয়ে রিজেক্ট হয়েছে।
  • শেষে ৩টি অনন্য রেকর্ড রয়েছে।

আধুনিক পদ্ধতি: updateOne with upsert

db.insertWithoutDuplicateDemo.updateOne(
  { "StudentFirstName": "NewName" },
  { $setOnInsert: { "StudentFirstName": "NewName" } },
  { upsert: true }
);

$setOnInsert শুধু ইনসার্টের সময় সেট হয়, আপডেটের সময় নয়। এটি আরও নিরাপদ।

  1. MongoDB-তে ডেটা ইনসার্ট করার পদ্ধতি

  2. MongoDB-এ বাল্ক ইন্সার্ট (initializeUnorderedBulkOp) করা

  3. MongoDB কালেকশন থেকে ডুপ্লিকেট রিমুভ করার পদ্ধতি

  4. MongoDB-এ অ্যারেতে ডুপ্লিকেট চেক করা