MongoDB এগ্রিগেশন পাইপলাইনে $match স্টেজের ব্যবহার এবং কার্যকারিতা
হ্যাঁ, MongoDB এগ্রিগেশন পাইপলাইনে $match স্টেজ পুরোপুরি কাজ করে এবং এটি খুবই গুরুত্বপূর্ণ। এটি পাইপলাইনের শুরুতে ব্যবহার করা হলে ডকুমেন্ট ফিল্টার করে পরের স্টেজগুলোতে কম ডেটা যাবে, ফলে পারফরম্যান্স বেড়ে। এটি find()-এর মতো কোয়েরি সিনট্যাক্স সমর্থন করে।
১. কালেকশন ও নমুনা ডেটা তৈরি
> db.demo358.insertOne({"ClientId":101,"ClientName":"Chris","ClientAge":34});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5692c0f8647eb59e5620cb") }
> db.demo358.insertOne({"ClientId":102,"ClientName":"David","ClientAge":32});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5692caf8647eb59e5620cc") }
> db.demo358.insertOne({"ClientId":103,"ClientName":"David","ClientAge":35});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5692d2f8647eb59e5620cd") }
> db.demo358.insertOne({"ClientId":104,"ClientName":"Bob","ClientAge":31});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5692ddf8647eb59e5620ce") }
> db.demo358.insertOne({"ClientId":105,"ClientName":"Chris","ClientAge":36});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5692e7f8647eb59e5620cf") }
২. সব ডকুমেন্ট দেখানো
> db.demo358.find();
আউটপুট:
৩. এগ্রিগেশনে $match এবং $count ব্যবহার
> db.demo358.aggregate([ { $match: { "ClientName": "David" }}, { "$count": "ClientName" } ]);স্টেজ ব্যাখ্যা:
$match: {ClientName: "David"}- শুধু ClientName "David" वाले ডকুমেন্টগুলো পাস করান (২টি)।$count: "ClientName"- ইনপুট ডকুমেন্ট সংখ্যা গণনা করেClientNameফিল্ডে রিটার্ন করে।
৪. ফলাফল
সেরা প্র্যাকটিস:
$matchকখনও কখনও পাইপলাইনের শুরুতে রাখা উচিত যাতে ডাউনস্টREAM স্টেজগুলো কম ডেটা প্রসেস করে। যদি ফিল্টারের ফিল্ডে ইন্ডেক্স থাকে, তবে MongoDB অপ্টিমাইজেশন করুন।