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

MongoDB-এ এগ্রিগেশন পাইপলাইনে $match কাজ করে কিনা?


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 অপ্টিমাইজেশন করুন।


  1. MongoDB এগ리게েশন ফ্রেমওয়ার্কে গ্রুপ কুয়েরি উদাহরণ

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

  3. MongoDB-তে কেস-ইনসেনসিটিভ (Case-Insensitive) সার্চ করা ($regex)

  4. MongoDB এগ্রিগেশন: একাধিক ফিল্ড দিয়ে কাউন্ট করা