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

MongoDB-এ একাধিক অ্যারে এলিমেন্ট দিয়ে ফিল্টার করার পদ্ধতি

MongoDB-এ অ্যারেতে নেস্টেড ডকুমেন্টে একাধিক শর্ত একসাথে মেলাতে $elemMatch অপারেটর ব্যবহার করা হয়। এটি নিশ্চিত করে যে একই এলিমেন্টে সব শর্ত পূরণ হচ্ছে।

কলেকশন এবং ডকুমেন্ট তৈরি

> db.demo87.insertOne({
...   id: 101,
...   "Details": [
...     { "EmployeeName": "Chris", "Salary": 45000 },
...     { "EmployeeName": "David", "Salary": 50000 }
...   ]
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5e2c113871bf0181ecc422ab") }
> db.demo87.insertOne({
...   id: 102,
...   "Details": [
...     { "EmployeeName": "Chris", "Salary": 65000 },
...     { "EmployeeName": "Mike", "Salary": 100000 }
...   ]
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5e2c114371bf0181ecc422ac") }

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

> db.demo87.find();

আউটপুট:

{ "_id" : ObjectId("5e2c113871bf0181ecc422ab"), "id" : 101, "Details" : [ { "EmployeeName" : "Chris", "Salary" : 45000 }, { "EmployeeName" : "David", "Salary" : 50000 } ] }
{ "_id" : ObjectId("5e2c114371bf0181ecc422ac"), "id" : 102, "Details" : [ { "EmployeeName" : "Chris", "Salary" : 65000 }, { "EmployeeName" : "Mike", "Salary" : 100000 } ] }

একাধিক শর্তে ফিল্টার করার কোয়ারী

$elemMatch ব্যবহার করে EmployeeName: "Chris" এবং Salary: 65000 একই এলিমেন্টে আছে কিনা চেক করা হয়েছে:

> db.demo87.find({ Details: { $elemMatch: { "EmployeeName": 'Chris', "Salary": 65000 }}});

ফলাফল

{ "_id" : ObjectId("5e2c114371bf0181ecc422ac"), "id" : 102, "Details" : [ { "EmployeeName" : "Chris", "Salary" : 65000 }, { "EmployeeName" : "Mike", "Salary" : 100000 } ] }

ব্যাখ্যা:

  • প্রথম ডকুমেন্ট: Chris আছে কিন্তু Salary ৪৫০০০ (৬৫০০০ নয়) → মেলেনি
  • দ্বিতীয় ডকুমেন্ট: Chris আছে এবং Salary ৬৫০০০ → মেলেছে

$elemMatch ছাড়া কোয়ারী (ভুল পদ্ধতি):

db.demo87.find({ "Details.EmployeeName": "Chris", "Details.Salary": 65000 })

এটি ভুল ফলাফল দেবে! কারণ এটি আলাদা আলাদা এলিমেন্টে শর্ত চেক করে (Chris প্রথম এলিমেন্টে, 65000 দ্বিতীয় এলিমেন্টে থাকলেও মেলাবে)।

সারসংক্ষেপ: অ্যারে অবজেক্টে একাধিক শর্ত একই এলিমেন্টে মেলাতে হলে অবশ্যই $elemMatch ব্যবহার করুন।

  1. MongoDB-তে সাবডকুমেন্টের অ্যারে কুয়েরি

  2. MongoDB-তে অ্যারے के ভেতরের এলিমেন্ট আপডেট

  3. MongoDB-এ নেস্টেড অ্যারে সর্ট করা

  4. MongoDB-এ এমবেডেড ডকুমেন্টের অ্যারে ফিল্টার করা (৩ লেভেল)