একদম মজার ছলে, মায়ের ভাষায়, MongoDB Aggregation শেখা — বাংলায়!
এই ডকুমেন্টেশনটা MongoDB-এর Aggregation Framework নিয়ে একদম বাংলায় মজার ছলে শেখার গাইড।
আমরা কল্পনা করেছি — Aggregation হলো একটা মাঠ। $match, $group, $lookup এরা সব খেলোয়াড়। আর আমরা হচ্ছি ডেটার কোচ!
উদ্দেশ্য: ডেটা ফিল্টার করা।
মনে রাখো: $match মানে gatekeeper — কে ভিতরে যাবে, কে যাবে না!
উদাহরণ:
{ $match: { status: "active" } }মানে: শুধু active ইউজাররাই ঢুকতে পারবে!
উদ্দেশ্য: ডেটা গ্রুপ করে গুন, যোগ, গড় বের করা।
মনে রাখো: $group মানে হিসাবের মাস্টার।
উদাহরণ:
{
$group: {
_id: "$category",
total: { $sum: "$amount" }
}
}মানে: প্রতিটা ক্যাটাগরির মোট খরচ বের করো।
উদ্দেশ্য: অন্য কালেকশন থেকে ডেটা যোগ করা।
মনে রাখো: পাশের বাড়ি থেকে relation এনে database-এ প্রেম করানো! 😁
উদাহরণ:
{
$lookup: {
from: "users",
localField: "userId",
foreignField: "_id",
as: "userDetails"
}
}মানে: order এর সাথে userDetails যোগ করো।
উদ্দেশ্য: Array কে ভেঙে আলাদা আলাদা ডকুমেন্ট বানানো।
উদাহরণ:
{ $unwind: "$tags" }মানে: প্রতিটা tag আলাদা row এ দেখাও।
উদ্দেশ্য: কোন ফিল্ড দেখাবো, কোনটা লুকাবো, সেটার নিয়ন্ত্রণ।
উদাহরণ:
{
$project: {
name: 1,
email: 1,
password: 0
}
}মানে: name আর email দেখাও, password দেখিও না!
উদ্দেশ্য: ডেটা সাজানো।
উদাহরণ:
{ $sort: { totalSpent: -1 } }মানে: সবচেয়ে বেশি খরচ করেছে এমনটা আগে দেখাও।
উদ্দেশ্য: কয়টা রেজাল্ট দেখাবো, সেটা সীমিত করা।
উদাহরণ:
{ $limit: 5 }মানে: প্রথম ৫টা রেজাল্ট দেখাও।
উদ্দেশ্য: একসাথে একাধিক রিপোর্ট/পাইপলাইন চালানো।
উদাহরণ:
{
$facet: {
topCustomers: [ { $sort: { totalSpent: -1 } }, { $limit: 5 } ],
recentCustomers: [ { $sort: { createdAt: -1 } }, { $limit: 5 } ]
}
}মানে: একসাথে top customer আর latest customer report বের করো।
উদ্দেশ্য: range অনুযায়ী গ্রুপ করা (বালতিতে ভরা 😄)
উদাহরণ:
{
$bucket: {
groupBy: "$totalSpent",
boundaries: [0, 100, 500, 1000],
default: "VIP",
output: {
count: { $sum: 1 },
spent: { $sum: "$totalSpent" }
}
}
}মানে: খরচ অনুযায়ী ইউজারদের শ্রেণি ভাগ করো।
উদ্দেশ্য: নিজের কালেকশনেই recursively relation বের করা।
উদাহরণ: পারিবারিক গাছ বের করা বা কোনও category এর nested সাব-ক্যাটাগরি।
(এইটা একদম চ্যাম্পিয়ন লেভেলের ম্যাচ!)
[
{
$group: {
_id: "$customerId",
totalOrders: { $sum: 1 },
totalSpent: { $sum: { $multiply: ["$price", "$quantity"] } }
}
},
{
$lookup: {
from: "customers",
localField: "_id",
foreignField: "_id",
as: "customer"
}
},
{ $unwind: "$customer" },
{
$lookup: {
from: "referrals",
localField: "customer.referrerId",
foreignField: "_id",
as: "referrer"
}
},
{ $unwind: { path: "$referrer", preserveNullAndEmptyArrays: true } },
{
$facet: {
sortedByOrders: [
{ $sort: { totalOrders: -1 } },
{ $limit: 5 },
{
$project: {
name: "$customer.name",
referrer: "$referrer.name",
totalOrders: 1
}
}
],
sortedBySpent: [
{ $sort: { totalSpent: -1 } },
{ $limit: 5 },
{
$project: {
name: "$customer.name",
referrer: "$referrer.name",
totalSpent: 1
}
}
]
}
}
]এই README তৈরি করা হয়েছে:
- MongoDB Aggregation শেখার মজার বাংলা উপায়
- বাস্তব উদাহরণ দিয়ে query শেখানো
- হাসির ছলে শেখা যেন মনেই থাকে
"Query লিখতে জানলে তুমি Developer, Aggregation বুঝলে তুমি Data Sorcerer!"
MIT — ব্যবহার করো, কপি করো, remix করো। শুধু $group যেন $ex এর চেয়ে ক্লিন হয় 😉
ভালোবাসা, লগিক, আর হাসি দিয়ে বানানো — MongoBD-এর Aggregation ফুটবল টিমের পক্ষ থেকে! 🇧🇩⚽
#খেলাহবেMongoStyle 🧠💥