Aggregation pipeline adalah fitur paling kaya sekaligus paling cepat berkembang di MongoDB — hampir tiap rilis mayor menambahkan stage dan expression baru. Menulis pipeline tanpa peta referensi berarti menemukan ulang fitur yang sudah ada, seperti $densify untuk pengisian deret waktu atau $topN untuk peringkat. Chapter ini memetakan referensi aggregation resmi dan meluruskan perbedaan konsep yang paling sering membingungkan: stage, expression, dan method.
Stage versus Expression #
Dua jenis “operator aggregation” sering tertukar dalam percakapan sehari-hari. Stage adalah blok pembangun pipeline yang diawali tanda $ di level array — $match, $group, $lookup — dan hanya sah di dalam pipeline. Expression adalah fungsi yang bekerja di dalam field stage, seperti $sum, $concat, atau $dateTrunc. Referensinya kini terpisah rapi di bawah MQL Reference:
| Jenis | Halaman referensi | Contoh isinya |
|---|---|---|
| Stage | Aggregation Stages | $match, $group, $lookup, $merge |
| Expression | Expressions | $sum, $avg, $cond, $dateToString |
| Accumulator | Accumulators | $sum/$avg/$max dalam konteks $group dan $setWindowFields |
| Window function | Window Functions | operator jendela seperti $derivative dan $integral |
Halaman per operator tetap tinggal di jalur reference/operator/aggregation/ — misalnya halaman $group
dan $match
untuk stage, atau $sum
untuk expression. Sama seperti operator query, tiap halaman memuat sintaks, perilaku, dan contoh yang bisa langsung dicoba.
Halaman Ringkasan #
Aggregation Reference adalah lembar rangkuman resmi seluruh pipeline: tabel stage, tabel expression, hingga aturan penggunaan variabel. Halaman ini menggantikan “aggregation pipeline quick reference” lama — alamat lamanya kini mengalihkan ke sini. Untuk konsep dasar alih-alih daftar operator, mulailah dari Aggregation Operations yang menjelaskan alur kerja pipeline dan halaman konsep pipeline itu sendiri.
Method, Command, dan Helper #
Tiga pintu masuk mengeksekusi pipeline sering membingungkan. Method db.collection.aggregate()
adalah bentuk yang kita pakai di mongosh sepanjang Course ini. Di bawahnya, method tersebut membungkus perintah aggregate
— bentuk level protokol yang sama-sama didokumentasikan untuk klien low-level. Halaman method selalu jadi titik mular karena memuat opsi penting seperti explain dan allowDiskUse.
Tautan Penting #
| Tautan | Isi |
|---|---|
| Aggregation Reference | lembar rangkuman seluruh stage dan expression |
| Aggregation Stages | daftar lengkap stage pipeline beserta ketersediaan versinya |
| Expressions | daftar expression operator per kategori |
$group | contoh halaman stage dengan _id dan accumulator |
$lookup | stage join antar collection, lengkap varian correlated subquery |
| Aggregation Variables | variabel seperti $$ROOT dan $$NOW |
| db.collection.aggregate() | sintaks method beserta opsi cursor dan explain |
Kapan Referensi Ini Dipakai #
Referensi aggregation dipakai saat menyusun pipeline baru (mencari stage yang tepat untuk kebutuhan), mengoptimalkan pipeline lambat (memeriksa batasan memori tiap stage di halaman referensinya), dan memastikan ketersediaan operator pada versi server target — tabel di Aggregation Stages menyertakan kolom versi. Compass melengkapi alur ini lewat aggregation pipeline builder visual yang menghasilkan pipeline siap salin.
Tips Pencarian #
- Sebutkan nama stage secara eksplisit saat mencari, misalnya
$lookup multiple conditions— halaman referensinya menyertakan banyak varian skenario. - Untuk pertanyaan “operator X bisa dipakai di stage Y?”, buka halaman operator lalu cari nama stage di dalamnya, bukan sebaliknya.
- Halaman Aggregation Reference versi Markdown (tambahkan
.mddi akhir URL) enak disimpan sebagai contekan offline.
Rangkuman #
- Referensi aggregation terbagi bersih: Aggregation Stages untuk blok pipeline, Expressions untuk fungsi dalam stage, ditambah Accumulators dan Window Functions.
- Aggregation Reference menjadi lembar rangkuman pengganti quick reference lama; halaman per operator tetap di
reference/operator/aggregation/. db.collection.aggregate()(method) membungkus perintahaggregate— mulai dari halaman method untuk opsi praktis sepertiallowDiskUse.- Expression seperti
$sumpunya dua konteks (accumulator dan expression); pastikan membaca bagian yang sesuai posisinya di pipeline.