Aggregation Pipeline

Basic Aggregation Structure

Pipeline Syntax

// Basic aggregation pipeline
db.collection.aggregate([
    { stage1: { /* stage options */ } },
    { stage2: { /* stage options */ } },
    { stage3: { /* stage options */ } }
])

// Aggregation with options
db.collection.aggregate([
    { $match: { status: "active" } },
    { $group: { _id: "$category", count: { $sum: 1 } } }
], {
    allowDiskUse: true,
    cursor: { batchSize: 1000 }
})

Simple Examples

// Count documents by category
db.products.aggregate([
    { $group: { _id: "$category", count: { $sum: 1 } } }
])

// Average price by category
db.products.aggregate([
    { $group: { _id: "$category", avgPrice: { $avg: "$price" } } }
])

// Total sales by month
db.orders.aggregate([
    { $group: { 
        _id: { $dateToString: { format: "%Y-%m", date: "$orderDate" } },
        totalSales: { $sum: "$amount" }
    }}
])

Pipeline Stages

$match Stage

$group Stage

$sort Stage

$limit Stage

$skip Stage

$project Stage

$lookup Stage (Join)

$unwind Stage

$addFields Stage

$replaceRoot Stage

$facet Stage

Aggregation Operators

Arithmetic Operators

Comparison Operators

Logical Operators

String Operators

Array Operators

Date Operators

Conditional Operators

Advanced Aggregation Techniques

Window Functions

Graph Lookup

Bucket Aggregation

Sample Aggregation

Performance Optimization

Index Usage

Memory Management

Cursor Options

Common Aggregation Patterns

Sales Analysis

User Analytics

Product Performance

Last updated