MongoDB Aggregation Pipeline-এ $match স্টেজ ব্যবহার করে নির্দিষ্ট ফিল্ড মান वाले ডকুমেন্টগুলো ফিল্টার করা হয়। এটি find()-এর মতো কাজ করে কিন্তু এগরিগেশন পাইপলাইনের ভেতরে ব্যবহার করা যায়।
উদাহরণ: কালেকশন ও ডেটা তৈরি
> db.demo555.insertOne({"CountryName":"US"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8f21bf54b4472ed3e8e85f") }
> db.demo555.insertOne({"CountryName":"UK"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8f21c254b4472ed3e8e860") }
> db.demo555.insertOne({"CountryName":"US"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8f21c354b4472ed3e8e861") }
> db.demo555.insertOne({"CountryName":"AUS"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8f21c554b4472ed3e8e862") }
> db.demo555.insertOne({"CountryName":"US"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8f21c754b4472ed3e8e863") }
সব ডকুমেন্ট দেখানো
> db.demo555.find();
আউটপুট:
{ "_id" : ObjectId("5e8f21bf54b4472ed3e8e85f"), "CountryName" : "US" }
{ "_id" : ObjectId("5e8f21c254b4472ed3e8e860"), "CountryName" : "UK" }
{ "_id" : ObjectId("5e8f21c354b4472ed3e8e861"), "CountryName" : "US" }
{ "_id" : ObjectId("5e8f21c554b4472ed3e8e862"), "CountryName" : "AUS" }
{ "_id" : ObjectId("5e8f21c754b4472ed3e8e863"), "CountryName" : "US" }
Aggregation কোয়েরি: "US" वाले ডকুমেন্ট কাউন্ট করা
> db.demo555.aggregate([
{ $match: { CountryName: 'US' } },
{ $group: { _id: null, Total: { $sum: 1 } } }
])
কোয়েরির ব্যাখ্যা
$match: { CountryName: 'US' }— শুধুCountryName: "US"वाले ডকুমেন্টগুলো পাস করে।$group: { _id: null, Total: { $sum: 1 } }— সব ফিল্টার করা ডকুমেন্টকে এক গ্রুপে নিয়ে (_id: null) মোট সংখ্যা (Total) গণনা করে।
আউটপুট
{ "_id" : null, "Total" : 3 }
মোট ৩টি ডকুমেন্টে CountryName: "US" আছে।
মূল পয়েন্টসমূহ
$matchএগরিগেশন পাইপলাইনের প্রথমে ব্যবহার করলে পারফরম্যান্স ভালো হয় (ইন্ডেক্স ব্যবহার করতে পারে)।$groupএ_id: nullদিলে সব ডকুমেন্ট একসাথে গ্রুপ হয়।$sum: 1প্রতিটি ডকুমেন্টের জন্য ১ যোগ করে মোট কাউন্ট বের করে।