Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • MongoDB Documentation21টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • কেন Mongoose?
  • Installation
  • Connection
  • Schema
  • Model
  • Document
  • CRUD
  • Querying
  • Validation
  • Middleware
  • Population
  • Aggregation
  • Virtuals
  • Indexes
  • Error Handling
  • Update Operators
  • Transactions
  • Express Integration
  • Blog Project
  • Best Practices
  1. Docs
  2. MongoDB
  3. Aggregation Pipeline
MongoDBAdvanced

Aggregation Pipeline

$match, $group, $project, $sort দিয়ে ডেটা প্রসেসিং ও report তৈরি — বাংলায়।

10টি অংশবাংলা ভাষায়

Aggregation কী?

Aggregation pipeline হলো ধাপে ধাপে ডেটা processes করার সিস্টেম। প্রতিটি stage আগের stage-এর output-এ কাজ করে — যেমন grouping, summing, joining, reshape।

Basic pipeline

Category ধরে বিক্রয়js
js
const result = await Order.aggregate([
  // stage 1: শুধু paid order
  { $match: { status: "paid", createdAt: { $gte: startOfMonth } } },

  // stage 2: category ধরে জমা
  {
    $group: {
      _id: "$items.category",
      totalOrders: { $sum: 1 },
      revenue: { $sum: "$total" },
    },
  },

  // stage 3: নাম cleaner
  { $project: { category: "$_id", totalOrders: 1, revenue: 1, _id: 0 } },

  // stage 4: revenue অনুযায়ী সাজানো
  { $sort: { revenue: -1 } },

  // stage 5: top ৫
  { $limit: 5 },
]);

$lookup — aggregation-এ populate

$lookup joinjs
js
const ordersWithCustomer = await Order.aggregate([
  {
    $lookup: {
      from: "users",
      localField: "customer",
      foreignField: "_id",
      as: "customer",
    },
  },
  { $unwind: { path: "$customer", preserveNullAndEmptyArrays: true } },
  { $project: { total: 1, "customer.name": 1, "customer.email": 1 } },
]);

Common stages

Stageকাজ
$matchFilter (find-এর মতো)
$groupGrouping + accumulation ($sum, $avg, $count)
$projectField নির্বাচন/reshape
$sortকোনো field ধরে সাজান
$limit / $skipপেজিনেশন
$lookupঅন্য collection-এর সাথে join
$unwindArray-কে আলাদা document
$countমোট সংখ্যা
Count + averagejs
js
const stats = await Rating.aggregate([
  { $match: { product: productId } },
  {
    $group: {
      _id: null,
      totalReviews: { $sum: 1 },
      avgRating: { $avg: "$score" },
    },
  },
]);
Aggregate vs Query

সাধারণ filter/sort-এর জন্য find() যথেষ্ট। grouping, sum, join, complex report লাগলে aggregation pipeline — কারণ এটি ডেটাবেসের ভেতরেই ঘটে, ডেটা সার্ভারে আনতে হয় না।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরPopulation (Relationship)পরেরVirtual Properties
এই পেজে
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com