MongoDB তে অ্যাগ্রিগেশন পিপলাইন ব্যবহারের মাধ্যমে ডেটা প্রসেস এবং বিশ্লেষণ করা হয়। এই পিপলাইনে বিভিন্ন স্টেজ থাকে, এবং $match, $group, এবং $project হল তিনটি গুরুত্বপূর্ণ স্টেজ যা MongoDB তে ডেটা ফিল্টারিং, গ্রুপিং এবং প্রজেকশনের জন্য ব্যবহৃত হয়।
1. $match অপারেটর
$match অপারেটর MongoDB অ্যাগ্রিগেশন পিপলাইনে ডেটা ফিল্টার করতে ব্যবহৃত হয়। এটি কুয়েরি অপারেশন ব্যবহার করে, যাতে নির্দিষ্ট শর্ত পূর্ণ করে এমন ডকুমেন্টগুলো নির্বাচন করা হয়।
সিনট্যাক্স:
{ $match: { <query> } }
<query>: কুয়েরি শর্ত (যেমন:{ age: { $gt: 30 } })
ব্যবহার:
বয়সের ভিত্তিতে ফিল্টার:
db.users.aggregate([ { $match: { age: { $gt: 30 } } } ])এই কুয়েরি "users" কালেকশনের ডকুমেন্টগুলো থেকে সেই ডকুমেন্টগুলো ফিল্টার করবে যাদের বয়স ৩০ এর বেশি।
নামের ভিত্তিতে ফিল্টার:
db.users.aggregate([ { $match: { name: "John" } } ])এই কুয়েরি "users" কালেকশনের মধ্যে
nameএর মান "John" থাকা ডকুমেন্টগুলো নির্বাচন করবে।
2. $group অপারেটর
$group অপারেটর MongoDB তে গ্রুপিং করতে ব্যবহৃত হয়। এটি একটি অ্যাগ্রিগেশন স্টেজ, যা নির্দিষ্ট ফিল্ডের ভিত্তিতে ডকুমেন্টগুলোকে গ্রুপ করে এবং গ্রুপের উপর বিভিন্ন ধরনের অ্যাগ্রিগেশন অপারেশন চালায়।
সিনট্যাক্স:
{ $group: { _id: <field>, <aggregationOperations> } }
_id: গ্রুপ করার জন্য নির্বাচিত ফিল্ড (যেমন:age,name, ইত্যাদি)<aggregationOperations>: গ্রুপ করা ডেটার ওপর বিভিন্ন অপারেশন যেমনsum,avg,max,min,countইত্যাদি।
ব্যবহার:
বয়স অনুসারে গ্রুপিং এবং গননা:
db.users.aggregate([ { $group: { _id: "$age", totalUsers: { $sum: 1 } } } ])এই কুয়েরি "users" কালেকশনের ডকুমেন্টগুলো বয়স অনুসারে গ্রুপ করে এবং প্রতিটি বয়সের জন্য মোট কতজন ব্যবহারকারী আছেন তা গণনা করবে।
নামের ভিত্তিতে গ্রুপিং এবং গড় বয়স নির্ধারণ:
db.users.aggregate([ { $group: { _id: "$name", avgAge: { $avg: "$age" } } } ])এই কুয়েরি "users" কালেকশনের ডকুমেন্টগুলোকে নামের ভিত্তিতে গ্রুপ করে এবং প্রতিটি নামের জন্য গড় বয়স বের করবে।
3. $project অপারেটর
$project অপারেটর MongoDB অ্যাগ্রিগেশন পিপলাইনে ডেটার প্রজেকশন (ফিল্ড নির্বাচিত করা) করতে ব্যবহৃত হয়। এটি কেবল নির্দিষ্ট ফিল্ডগুলোকেই রিটার্ন করে, যা আপনি নির্ধারণ করেন।
সিনট্যাক্স:
{ $project: { <field1>: <value1>, <field2>: <value2>, ... } }
<field1>,<field2>: ফিল্ডের নাম যেগুলো আপনি প্রজেক্ট করতে চান।<value1>,<value2>:1বা0এর মান, যেখানে1মানে ফিল্ডটি অন্তর্ভুক্ত করা হবে এবং0মানে ফিল্ডটি বাদ দেওয়া হবে।
ব্যবহার:
নির্দিষ্ট ফিল্ড প্রজেক্ট করা:
db.users.aggregate([ { $project: { name: 1, age: 1 } } ])এই কুয়েরি "users" কালেকশনের
nameএবংageফিল্ডগুলোকেই রিটার্ন করবে এবং অন্যান্য ফিল্ড বাদ দিবে।নতুন ফিল্ড তৈরি করে প্রজেক্ট করা:
db.users.aggregate([ { $project: { name: 1, age: 1, ageInMonths: { $multiply: ["$age", 12] } } } ])এই কুয়েরি "users" কালেকশনের
nameএবংageফিল্ডগুলো রিটার্ন করবে, সাথেageInMonthsনামের নতুন ফিল্ড তৈরি করবে, যা বয়সের ভিত্তিতে মাসে পরিণত হবে।
সারাংশ
MongoDB তে $match, $group, এবং $project অপারেটরগুলি অ্যাগ্রিগেশন পিপলাইনের গুরুত্বপূর্ণ অংশ। $match অপারেটর ব্যবহার করে ডেটা ফিল্টার করা হয়, $group অপারেটর দিয়ে ডেটাকে গ্রুপ করা হয় এবং $project অপারেটর দিয়ে ডেটার ফিল্ড প্রজেক্ট বা নির্বাচিত করা হয়। এই অপারেশনগুলির মাধ্যমে MongoDB তে ডেটা বিশ্লেষণ এবং প্রসেসিং খুবই শক্তিশালী এবং নমনীয় হয়।
Read more