Pada bab ini, kami akan memperkenalkan Pipa Agregasi MongoDB, yang digunakan terutama untuk analisis statistik, mirip dengan pernyataan group by pada SQL. Di shell MongoDB, analisis statistik dicapai melalui fungsi db.collection.aggregate().

Konsep

Pipa Agregasi adalah konsep abstrak yang memperlakukan data seperti air yang mengalir melalui pipa. Kita dapat memproses data dalam beberapa tahap dalam pipa. Setelah satu tahap memproses data, hasil yang diproses dilewatkan ke tahap berikutnya untuk diproses lebih lanjut.

Contoh penerapan pipa agregasi dalam analisis statistik:

  • Pada tahap pertama, sekelompok data dokumen diambil dari koleksi berdasarkan kondisi tertentu.
  • Pada tahap kedua, data dokumen yang diambil dikelompokkan dan diakumulasikan.
  • Pada tahap ketiga, data yang telah diakumulasi dari tahap kedua diurutkan.

Seluruh proses ini mirip dengan operasi pipa di mana data mengalir dari satu ujung pipa, mengalami pengolahan melalui beberapa tahap, dan kemudian menghasilkan hasil akhir.

Operator yang Didukung dalam Pipa MongoDB

Berikut adalah operator pipa umum yang didukung oleh MongoDB:

Operator Deskripsi
$match Tahap $match digunakan untuk menyaring data dokumen berdasarkan kondisi, mirip dengan kondisi where dalam SQL.
$group Tahap $group digunakan untuk mengelompokkan dan mengakumulasi data dokumen, mirip dengan klausa group by dalam SQL.
$sort Digunakan untuk mengurutkan data.

Langkah-langkah Penggunaan Pipa Agregasi

Biasanya, terdapat tiga langkah yang terlibat:

  • Menyaring data target menggunakan $match.
  • Mengelompokkan dan mengakumulasi data menggunakan $group.
  • Mengurutkan hasil menggunakan $sort (opsional).

Contoh:

db.orders.aggregate([
                     { $match: { status: "A" } },
                     { $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
                     { $sort: { total: -1 } }
                   ])

SQL yang setara:

select sum(amount) as total from orders 
		where status="A" 
		group by cust_id 
		order by total desc

Catatan: Untuk informasi lebih lanjut mengenai analisis statistik agregat, silakan merujuk ke bab-bab berikutnya.