TUGAS 5 (DATABASE ADVANCE - aggregation framework)


 AGGREGATION FRAMEWORK


Apa itu Aggregation Framework?

Aggregation Framework di MongoDB adalah proses yang digunakan untuk memproses dan mengubah data dari beberapa dokumen ke dalam hasil yang diinginkan. Framework ini berfungsi mirip dengan fungsi GROUP BY pada SQL, tetapi dengan fitur tambahan yang lebih kuat, seperti perhitungan statistik, pengelompokan data, filtering, dan transformasi.

Fungsi Aggregation Framework

Aggregation Framework memudahkan pengelolaan data dalam berbagai cara, antara lain:

  • Menghitung statistik
  • Mengelompokkan data
  • Melakukan filterisasi atau penyaringan data
  • Melakukan transformasi data

Dengan menggunakan Aggregation Framework, pengembang dapat membuat query yang lebih kompleks dan efisien.

Tahapan dalam Aggregation Framework

Aggregation di MongoDB menggunakan pipeline yang terdiri dari beberapa tahapan (stages), di mana setiap tahap melakukan operasi tertentu pada data dan mengirimkan hasilnya ke tahap berikutnya. Berikut adalah beberapa tahapan penting:

  • $match: Tahap ini digunakan untuk menyaring dokumen berdasarkan kondisi tertentu (mirip dengan WHERE di SQL).
  • $group: Mengelompokkan dokumen berdasarkan nilai yang sama dari satu atau lebih field, biasanya digunakan untuk melakukan agregasi seperti sum atau count.
  • $sort: Mengurutkan dokumen berdasarkan field tertentu, misalnya mengurutkan berdasarkan tanggal secara ascending atau descending.
  • $project: Memilih field tertentu yang ingin ditampilkan dalam hasil akhir.
  • $limit: Membatasi jumlah dokumen yang dikembalikan dalam hasil query.
  • $lookup: Untuk menggabungkan data dari dua koleksi yang berbeda, mirip dengan JOIN di SQL.
  • $unwind: Membongkar array menjadi beberapa dokumen individu, yang memungkinkan analisis yang lebih mendalam.
  • $facet: Menjalankan beberapa pipeline agregasi secara paralel dan menggabungkan hasilnya.
  • $bucket dan $bucketAuto: Mengelompokkan dokumen ke dalam bucket dengan rentang nilai tertentu.
  • $redact: Menyaring dokumen berdasarkan level akses yang diizinkan.

Contoh Penggunaan Aggregation Framework

a. $match

Memilih semua dokumen yang memiliki status "Shipped" di koleksi orders.

db.orders.aggregate([ { $match: { status: "Shipped" } } ]);

b. $group

Mengelompokkan dokumen berdasarkan customer_id dan menghitung total jumlah pesanan untuk setiap pelanggan.

db.orders.aggregate([ { $group: { _id: "$customer_id", totalAmount: { $sum: "$amount" } } } ]);

c. $sort

Mengurutkan dokumen berdasarkan order_date secara descending.

db.orders.aggregate([ { $sort: { order_date: -1 } } ]);

d. $lookup

Menggabungkan data pesanan (orders) dengan data pelanggan (customers).

db.orders.aggregate([ { $lookup: { from: "customers", localField: "customer_id", foreignField: "_id", as: "customer_info" } } ]);

e. $unwind

Membongkar array products pada dokumen pesanan.

db.orders.aggregate([ { $unwind: "$products" }, { $group: { _id: "$products.name", totalSold: { $sum: "$products.quantity" } } } ]);

f. $facet

Melakukan beberapa analisis sekaligus pada data pesanan.

db.orders.aggregate([ { $facet: { "totalAmount": [{ $group: { _id: null, total: { $sum: "$amount" } } }], "orderByCustomer": [{ $group: { _id: "$customer_id", orders: { $sum: 1 } } }] } } ]);

CONTOH LATIHAN

( Membuat API CRUD dengan Node.js dan MongoDB )


PERSIAPAN
1. Buka VSCode, open folder arahkan ke C:\xampp\htdocs dan view terminal 2. Buat direktori baru untuk proyek, misalnya crud-api2 mkdir crud-api4 cd crud-api4

3. Inisialisasi npm untuk membuat file package.json:
pm init -y











4. Instal semua dependency yang diperlukan: npm install express mongoose nodemon body-parser








5. Tambahkan script berikut di package.json untuk menjalankan aplikasi: "scripts": { "start": "node index.js", "dev": "nodemon index.js" }





Fungsi menambahkan script diatas agar ketika menjalankan server tidak manual dengan perintah seperti node index.js atau nodemon index.js tapi cukup dengan perintah npm run start atau npm run dev

BUAT DATABASE DAN KOLEKSI

1. Buat database dengan nama: polibest4








2. Buat data koleksi customers



3. Buat data koleksi orders



BUAT FILE INDEX.JS

Buat file index.js di dalam folder crud-api4




MENJALANKAN DAN MENGUJI APLIKASI DENGAN AGRESIASI GROUP

1. Jalankan server dengan perintah: npm run dev











2. GET Request: http://localhost:3000/orders/group




3. Menampilkan jumlah total amount yang dibelanjakan oleh masing-masing customer_id.
















MENJALANKAN DAN MENGUJI APLIKASI DENGAN AGREGASI MATCH

1. GET Request: http://localhost:3000/orders/match





2. Mengambil data pesanan dengan amount lebih besar dari atau sama dengan 300, lalu mengurutkan berdasarkan amount secara menurun (descending).



MENJALANKAN DAN MENGUJI APLIKASI DENGAN AGREGASI LOOKUP

1. GET Request: http://localhost:3000/orders/lookup



2. This endpoint will join the orders collection with the customers collection, displaying
customer information along with each order.


MENJALANKAN DAN MENGUJI APLIKASI DENGAN AGREGASI UNWIND

1. GET Request: http://localhost:3000/orders/unwind




2. This endpoint will decompose the products array from the orders collection and
group them by product name with the total quantity sold.




Komentar

Postingan populer dari blog ini

Local File Inclusion (LFI) & Remote File Inclusion (RFI) - Sabilla Ardani Putri

TIDAK TERPAKAI - Footprinting dan Reconnaissance menggunakan Whois, Web History, Google Dork, GHDB

Manajemen Data Master - Sabilla Ardani Putri