MongoDB - Agregasi: Panduan untuk Pemula

Halo sana, para master MongoDB masa depan! Saya sangat senang 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, pada akhir tutorial ini, Anda akan mengagregasikan data seperti seorang pro. Jadi, mari kita masuk ke dalam!

MongoDB - Aggregation

Apa Itu Agregasi?

Sebelum kita melompat ke detilnya, mari kita mengerti apa itu agregasi. Bayangkan Anda sedang merencanakan pesta besar (siapa yang tidak menyukai pesta database yang bagus, kan?). Anda memiliki daftar semua teman Anda dengan umur, warna kesukaan, dan preferensi es krim mereka. Agregasi seperti mengorganisir semua informasi ini untuk menjawab pertanyaan seperti "Umur rata-rata teman saya berapa?" atau "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 mengambil insights berharga. Itu seperti memiliki asisten super cerdas yang dapat cepat menyaring melalui pegunungan 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:

  1. db.friends adalah koleksi data teman kita.
  2. aggregate() adalah metode yang kita gunakan untuk melakukan operasi kita.
  3. Dalam aggregate(), kita memiliki array tahap. Setiap tahap adalah langkah dalam pipeline agregasi kita (lebih lanjut tentang ini sebentar!).
  4. $group adalah tahap agregasi yang mengelompokkan dokumen bersama.
  5. _id: null berarti kita mengelompokkan semua dokumen bersama.
  6. averageAge: { $avg: "$age" } menghitung rerata field "age" dan menamai 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 menyukai permen?). Bahan baku mentah melalui berbagai mesin, setiap mesin menambahkan sesuatu untuk menciptakan produk yang lezat. Ini adalah cara tepat bagaimana pipeline agregasi bekerja!

Dalam MongoDB, pipeline agregasi adalah rangkaian tahap. Setiap tahap mentransformasi dokumen saat mereka melewati. Mari lihat contoh yang lebih kompleks:

db.friends.aggregate([
{ $match: { age: { $gte: 18 } } },
{ $group: { _id: "$favoriteColor", count: { $sum: 1 } } },
{ $sort: { count: -1 } }
])

Mari kitauraikan ini:

  1. $match: Tahap ini menyaring dokumen. Di sini, kita hanya menyimpan teman yang berusia 18 atau lebih tua.
  2. $group: Kita mengelompokkan dokumen yang tersisa berdasarkan warna kesukaan dan menghitung berapa banyak teman yang menyukai setiap warna.
  3. $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 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 Menguraikan field array { $unwind: "$hobbies" }

Setiap operator ini membuka kemungkinan baru untuk analisis data. Misalnya, $project seperti sebuah makeup untuk dokumen Anda. Anda dapat memilih field mana yang akan dipertahankan, mengubah nama field, atau bahkan menciptakan 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:

  1. Field _id dihilangkan (_id: 0)
  2. Field fullName yang baru, yang menggabungkan firstName dan lastName
  3. Field age dipertahankan (age: 1)

Itu seperti magis - Anda baru saja menciptakan versi baru dan ringkas dari daftar teman Anda!

Kesimpulan

Dan begitu punya, teman-teman! Kita telah mengambil langkah pertama ke dunia agregasi MongoDB. Kita telah belajar tentang metode aggregate(), mengeksplorasi konsep pipeline, dan bahkan menyusuri beberapa operator yang kuat. Ingat, seperti belajar keterampilan baru, menguasai agregasi memerlukan latihan. Jangan takut untuk mencoba pipeline dan operator yang berbeda.

Sebagai Anda terus melanjutkan perjalanan MongoDB Anda, Anda akan menemukan bahwa agregasi adalah alat yang sangat kuat. Itu seperti memiliki pisau Swiss Army untuk data Anda - multifungsi, kuat, dan selalu ada saat Anda membutuhkannya. Jadi, majulah, agregasikan data Anda, dan temukan insights yang tersembunyi di database Anda!

Happy coding, dan may your aggregations always be efficient and your pipelines never leak!

Credits: Image by storyset