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

MongoDB-এ অ্যারেতে একাধিক শর্ত মিলিয়ে কোয়ারি করার পদ্ধতি

MongoDB-এ অ্যারেতে নেস্ট করা অবজেক্টগুলোর মধ্যে একাধিক শর্ত মিলিয়ে কোয়ারি করতে aggregate() পাইপলাইনের $match স্টেজে $elemMatch অপারেটর ব্যবহার করা হয়।

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

> db.demo84.insertOne({
...   "EmployeeDetails": [
...     {Name: 'John', Salary:45000, isMarried: true},
...     {Name: 'Chris', Salary:50000, isMarried: false}
...   ]
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5e2c0a3471bf0181ecc422a5") }
> db.demo84.insertOne({
...   "EmployeeDetails": [
...     {Name: 'Sam', Salary:56000, isMarried: false},
...     {Name: 'Bob', Salary:50000, isMarried: false}
...   ]
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5e2c0a4071bf0181ecc422a6") }

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

> db.demo84.find();

আউটপুট:

{ "_id" : ObjectId("5e2c0a3471bf0181ecc422a5"), "EmployeeDetails" : [ { "Name" : "John", "Salary" : 45000, "isMarried" : true }, { "Name" : "Chris", "Salary" : 50000, "isMarried" : false } ] }
{ "_id" : ObjectId("5e2c0a4071bf0181ecc422a6"), "EmployeeDetails" : [ { "Name" : "Sam", "Salary" : 56000, "isMarried" : false }, { "Name" : "Bob", "Salary" : 50000, "isMarried" : false } ] }

একাধিক শর্ত মিলিয়ে কোয়ারি

$elemMatch ব্যবহার করে একই অ্যারে এলিমেন্টে Name: "Chris" এবং isMarried: false দুটি শর্ত মিলানো হয়েছে:

> db.demo84.aggregate([
...   {
...     "$match": {
...       "EmployeeDetails": {
...         "$elemMatch": {
...           "Name": "Chris",
...           "isMarried": false
...         }
...       }
...     }
...   }
... ]);

ফলাফল

{ "_id" : ObjectId("5e2c0a3471bf0181ecc422a5"), "EmployeeDetails" : [ { "Name" : "John", "Salary" : 45000, "isMarried" : true }, { "Name" : "Chris", "Salary" : 50000, "isMarried" : false } ] }

ব্যাখ্যা: শুধু প্রথম ডকুমেন্ট রিটার্ন হয়েছে কারণ সেটাতে EmployeeDetails অ্যারেতে একই এলিমেন্টে "Chris" নাম এবং isMarried: false উভয়ই পাওয়া যায়। দ্বিতীয় ডকুমেন্টে "Chris" নাম নেই।

গুরুত্বপূর্ণ: $elemMatch নিশ্চিত করে যে একই অ্যারে এলিমেন্টে সব শর্ত পূরণ হচ্ছে, আলাদা এলিমেন্টে নয়।

  1. MongoDB $match ব্যবহার করে ডেট ম্যাচ করা

  2. MongoDB অগরিগেশনে ম্যাক্স ভ্যালু সহ অ্যারে এলিমেন্ট ম্যাচ এবং গ্রুপ করা

  3. MongoDB-এ অ্যারে অবজেক্টের মধ্যে একাধিক শর্ত ম্যাচ করা

  4. MongoDB-এ অ্যারে ফিল্ডে সব এলিমেন্ট ম্যাচ করা ($all অপারেটর)