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

MongoDB-এ এগ্রিগেশন ব্যবহার করে ইনার অ্যারে-র ডুপ্লিকেট চেক করা


MongoDB-এ $unwind, $group, $match ব্যবহার করে নেস্টেড অ্যারে-র ডুপ্লিকেট ফিল্ড খুঁজে বের করা

MongoDB-এ একটি ডকুমেন্টের ভেতরে নেস্টেড অ্যারে থাকলে, সেটির ভেতরের ফিল্ডে ডুপ্লিকেট মান আছে কিনা চেক করতে এগ্রিগেশন পাইপলাইনে $unwind (অ্যারে ফ্ল্যাটেন), $group (গ্রুপিং), $match (ফিল্টার) ব্যবহার করা হয়।

১. কালেকশন ও ডুপ্লিকেট ডেটা সহ ডকুমেন্ট তৈরি

> db.demo347.insertOne({ "details": { "details1": [ { Name: "Chris", Age: 21 } ] } });
{ "acknowledged" : true, "insertedId" : ObjectId("5e5532eaf8647eb59e5620af") }
> db.demo347.insertOne({ "details": { "details1": [ { Name: "David", Age: 22 } ] } });
{ "acknowledged" : true, "insertedId" : ObjectId("5e55330af8647eb59e5620b0") }
> db.demo347.insertOne({ "details": { "details1": [ { Name: "Chris", Age: 21 } ] } });
{ "acknowledged" : true, "insertedId" : ObjectId("5e55331cf8647eb59e5620b1") }

২. সব ডকুমেন্ট দেখানো

> db.demo347.find();

আউটপুট:

{ "_id" : ObjectId("5e5532eaf8647eb59e5620af"), "details" : { "details1" : [ { "Name" : "Chris", "Age" : 21 } ] } }
{ "_id" : ObjectId("5e55330af8647eb59e5620b0"), "details" : { "details1" : [ { "Name" : "David", "Age" : 22 } ] } }
{ "_id" : ObjectId("5e55331cf8647eb59e5620b1"), "details" : { "details1" : [ { "Name" : "Chris", "Age" : 21 } ] } }

"Chris", 21 দুবার রিপিট হয়েছে (পहেল এবং তৃতীয় ডকুমেন্টে)।

৩. এগ্রিগেশন কোয়েরি: ডুপ্লিকেট Name খুঁজে বের করা

> db.demo347.aggregate([
  { "$unwind": "$details" },
  { "$unwind": "$details.details1" },
  { "$group": { "_id": "$details.details1.Name", "count": { "$sum": 1 } } },
  { "$match": { "_id": { "$ne": null }, "count": { "$gt": 1 } } }
])

স্টেজ ব্যাখ্যা:

  1. $unwind: "$details" - details অবজেক্টকে ফ্ল্যাটেন (প্রতিটি ডকুমেন্টের জন্য একটি রো)।
  2. $unwind: "$details.details1" - details1 অ্যারে-র প্রতিটি এলিমেন্টকে আলাদা রো বানায়।
  3. $group - Name ফিল্ড দিয়ে গ্রুপ করে কাউন্ট করে।
  4. $match - count > 1 এবং _id != null (ডুপ্লিকেট ফিল্টার)।

৪. ফলাফল

{ "_id" : "Chris", "count" : 2 }

"Chris" নামটি ২ বার পাওয়া গেছে। এটি ডেটা কোয়ালিটি চেক বা ডিডিউপ্লিকেশনের জন্য খুব উপকারী।


  1. MongoDB-তে অবজেক্টের ফিল্ড অ্যারে ভ্যালু কোয়েরি করা

  2. MongoDB-এ find() প্রজেকশন দিয়ে একক ফিল্ড আনা

  3. MongoDB-এ অ্যারে কনক্যাটেনেট (Concatenate) করা: $concatArrays ব্যবহার

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