MongoDB - Agregasi: Panduan untuk Pemula
Hai sana, para master MongoDB masa depan! Saya sangat gembira menjadi panduan Anda dalam perjalanan menarik ke dunia agregasi MongoDB. Sebagai seseorang yang telah mengajar ilmu komputer selama bertahun-tahun, saya dapat menjamin bahwa meskipun ini mungkin terlihat menakutkan pada awalnya, setelah selesai tutorial ini, Anda akan mengagregasikan data seperti seorang pro. Jadi, mari kita masuk ke dalamnya!
Apa Itu Agregasi?
Sebelum kita melompat ke hal-hal teknis, mari kita memahami apa itu agregasi. Bayangkan Anda sedang merencanakan pesta besar (siapa yang tidak suka pesta database yang bagus, kan?). Anda memiliki daftar semua teman Anda dengan umur, warna kesukaan, dan preferensi es krim mereka. Agregasi adalah seperti mengorganisir semua informasi ini untuk menjawab pertanyaan seperti "Umur rata-rata teman saya berapa?" atau "Rasa es krim mana yang paling populer?" Itu adalah cara untuk memproses dan menganalisis data dalam cara yang berarti.
Dalam MongoDB, agregasi memungkinkan kita untuk melakukan operasi kompleks pada data kita, mentransformasi dan menggabungkannya untuk mengeluarkan insights berharga. Itu seperti memiliki asisten super cerdas yang dapat cepat menyaring melalui gunung data dan memberikan Anda persis apa yang Anda butuhkan.
Metode aggregate()
Pada hati kerangka kerja agregasi MongoDB adalah metode aggregate()
. Ini adalah tongkat ajaib kita untuk melakukan operasi agregasi. Mari kita lihat contoh sederhana:
db.friends.aggregate([
{ $group: { _id: null, averageAge: { $avg: "$age" } } }
])
Dalam contoh ini, kita meminta MongoDB untuk menghitung umur rata-rata semua teman kita. Mari kitauraikan ini:
-
db.friends
adalah koleksi data teman kita. -
aggregate()
adalah metode yang kita gunakan untuk melakukan operasi kita. - Dalam
aggregate()
, kita memiliki array dari tahapan. Setiap tahap adalah langkah dalam pipeline agregasi kita (lebih banyak tentang ini nanti!). -
$group
adalah tahap agregasi yang mengelompokkan dokumen bersama. -
_id: null
berarti kita mengelompokkan semua dokumen bersama. -
averageAge: { $avg: "$age" }
menghitung rata-rata field "age" dan menamakan hasilnya "averageAge".
Ketika Anda menjalankan ini, MongoDB akan mengembalikan umur rata-rata semua teman Anda. Keren, kan?
Konsep Pipeline
Sekarang, mari kita bicarakan tentang konsep pipeline. Bayangkan Anda di pabrik permen (siapa yang tidak suka permen?). Bahan baku mentah melewati berbagai mesin, setiap mesin menambahkan sesuatu untuk menciptakan produk lezat akhir. Ini adalah cara tepat bagaimana pipeline agregasi bekerja!
Dalam MongoDB, pipeline agregasi adalah rangkaian tahap. Setiap tahap mentransformasi dokumen saat mereka melewati. mari kita lihat contoh yang lebih kompleks:
db.friends.aggregate([
{ $match: { age: { $gte: 18 } } },
{ $group: { _id: "$favoriteColor", count: { $sum: 1 } } },
{ $sort: { count: -1 } }
])
Mari kitauraikan ini:
-
$match
: Tahap ini menyaring dokumen. Di sini, kita hanya menyimpan teman yang berusia 18 tahun atau lebih. -
$group
: Kita mengelompokkan dokumen yang tersisa berdasarkan warna kesukaan dan menghitung berapa banyak teman yang menyukai setiap warna. -
$sort
: Akhirnya, kita mengurutkan hasilnya berdasarkan jumlah dalam urutan menurun.
Pipeline ini akan memberikan kita daftar warna kesukaan diantara teman dewasa, diurutkan dari yang paling populer ke yang paling kurang populer. Itu seperti bertanya, "Apa warna yang tren diantara teman dewasa saya?"
Operator Agregasi
MongoDB menyediakan berbagai operator untuk digunakan dalam pipeline agregasi Anda. Berikut adalah tabel dari beberapa yang umum:
Operator | Deskripsi | Contoh |
---|---|---|
$match | Menyaring dokumen | { $match: { age: { $gte: 18 } } } |
$group | Mengelompokkan dokumen berdasarkan ekspresi tertentu | { $group: { _id: "$city", totalPop: { $sum: "$pop" } } } |
$sort | Mengurutkan dokumen | { $sort: { age: -1 } } |
$limit | Batasi jumlah dokumen | { $limit: 5 } |
$project | Mengubah bentuk dokumen | { $project: { name: 1, age: 1 } } |
$unwind | Menghancurkan field array | { $unwind: "$hobbies" } |
Setiap operator ini membuka kemungkinan baru untuk analisis data. Misalnya, $project
adalah seperti makeup untuk dokumen Anda. Anda dapat memilih field mana yang akan dipertahankan, mengubah nama field, atau bahkan membuat field baru. Itu seperti mengatakan ke MongoDB, "Saya ingin versi baru daftar teman saya, tapi hanya dengan nama dan umur, silakan!"
Mari kita lihat $project
dalam aksi:
db.friends.aggregate([
{ $project: {
_id: 0,
fullName: { $concat: ["$firstName", " ", "$lastName"] },
age: 1
} }
])
Pipeline ini menciptakan pandangan baru dari koleksi teman kita dengan:
- Field
_id
dikecualikan (_id: 0
) - Field
fullName
yang menggabungkanfirstName
danlastName
- Field
age
dimasukkan (age: 1
)
Itu seperti magis - Anda baru saja menciptakan versi baru dan ringkas dari daftar teman Anda!
Kesimpulan
Dan begitu saja, teman-teman! Kita telah mengambil langkah pertama ke dunia agregasi MongoDB. Kita telah belajar tentang metode aggregate()
, mengeksplorasi konsep pipeline, dan bahkan melihat beberapa operator yang kuat. Ingat, seperti belajar keterampilan baru, menguasai agregasi memerlukan latihan. Jangan takut untuk mencoba pipeline dan operator berbeda.
Sebagai Anda terus mengembangkan perjalanan Anda di MongoDB, Anda akan menemukan bahwa agregasi adalah alat yang sangat kuat. Itu seperti memiliki pisau瑞士 Army knife untuk data Anda - multifungsi, kuat, dan selalu ada saat Anda membutuhkannya. Jadi, pergilah, agregasikan data Anda, dan ungkap insights yang tersembunyi di database Anda!
Happy coding, dan may your aggregations always be efficient and your pipelines never leak!
Credits: Image by storyset