Skip to content

এই ডকুমেন্টেশনটা MongoDB-এর Aggregation Framework নিয়ে একদম বাংলায় মজার ছলে শেখার গাইড। আমরা কল্পনা করেছি — Aggregation হলো একটা মাঠ। $match, $group, $lookup এরা সব খেলোয়াড়। আর আমরা হচ্ছি ডেটার কোচ!

Notifications You must be signed in to change notification settings

Sarwarhridoy4/mongo-aggrigation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

MongoDB Aggregation — খেলা হবে! 🇧🇩

একদম মজার ছলে, মায়ের ভাষায়, MongoDB Aggregation শেখা — বাংলায়!


🧠 সারসংক্ষেপ

এই ডকুমেন্টেশনটা MongoDB-এর Aggregation Framework নিয়ে একদম বাংলায় মজার ছলে শেখার গাইড।

আমরা কল্পনা করেছি — Aggregation হলো একটা মাঠ। $match, $group, $lookup এরা সব খেলোয়াড়। আর আমরা হচ্ছি ডেটার কোচ!


🧪 আমরা যা যা শিখেছি

🔍 $match

উদ্দেশ্য: ডেটা ফিল্টার করা।

মনে রাখো: $match মানে gatekeeper — কে ভিতরে যাবে, কে যাবে না!

উদাহরণ:

{ $match: { status: "active" } }

মানে: শুধু active ইউজাররাই ঢুকতে পারবে!


🧮 $group

উদ্দেশ্য: ডেটা গ্রুপ করে গুন, যোগ, গড় বের করা।

মনে রাখো: $group মানে হিসাবের মাস্টার।

উদাহরণ:

{
  $group: {
    _id: "$category",
    total: { $sum: "$amount" }
  }
}

মানে: প্রতিটা ক্যাটাগরির মোট খরচ বের করো।


🔗 $lookup

উদ্দেশ্য: অন্য কালেকশন থেকে ডেটা যোগ করা।

মনে রাখো: পাশের বাড়ি থেকে relation এনে database-এ প্রেম করানো! 😁

উদাহরণ:

{
  $lookup: {
    from: "users",
    localField: "userId",
    foreignField: "_id",
    as: "userDetails"
  }
}

মানে: order এর সাথে userDetails যোগ করো।


🧨 $unwind

উদ্দেশ্য: Array কে ভেঙে আলাদা আলাদা ডকুমেন্ট বানানো।

উদাহরণ:

{ $unwind: "$tags" }

মানে: প্রতিটা tag আলাদা row এ দেখাও।


🎭 $project

উদ্দেশ্য: কোন ফিল্ড দেখাবো, কোনটা লুকাবো, সেটার নিয়ন্ত্রণ।

উদাহরণ:

{
  $project: {
    name: 1,
    email: 1,
    password: 0
  }
}

মানে: name আর email দেখাও, password দেখিও না!


🔢 $sort

উদ্দেশ্য: ডেটা সাজানো।

উদাহরণ:

{ $sort: { totalSpent: -1 } }

মানে: সবচেয়ে বেশি খরচ করেছে এমনটা আগে দেখাও।


🚫 $limit

উদ্দেশ্য: কয়টা রেজাল্ট দেখাবো, সেটা সীমিত করা।

উদাহরণ:

{ $limit: 5 }

মানে: প্রথম ৫টা রেজাল্ট দেখাও।


🧊 $facet

উদ্দেশ্য: একসাথে একাধিক রিপোর্ট/পাইপলাইন চালানো।

উদাহরণ:

{
  $facet: {
    topCustomers: [ { $sort: { totalSpent: -1 } }, { $limit: 5 } ],
    recentCustomers: [ { $sort: { createdAt: -1 } }, { $limit: 5 } ]
  }
}

মানে: একসাথে top customer আর latest customer report বের করো।


🪣 $bucket

উদ্দেশ্য: range অনুযায়ী গ্রুপ করা (বালতিতে ভরা 😄)

উদাহরণ:

{
  $bucket: {
    groupBy: "$totalSpent",
    boundaries: [0, 100, 500, 1000],
    default: "VIP",
    output: {
      count: { $sum: 1 },
      spent: { $sum: "$totalSpent" }
    }
  }
}

মানে: খরচ অনুযায়ী ইউজারদের শ্রেণি ভাগ করো।


🔁 $graphLookup

উদ্দেশ্য: নিজের কালেকশনেই 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 🧠💥

About

এই ডকুমেন্টেশনটা MongoDB-এর Aggregation Framework নিয়ে একদম বাংলায় মজার ছলে শেখার গাইড। আমরা কল্পনা করেছি — Aggregation হলো একটা মাঠ। $match, $group, $lookup এরা সব খেলোয়াড়। আর আমরা হচ্ছি ডেটার কোচ!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors