TUGAS 5 (DATABASE ADVANCE - aggregation framework)
- Dapatkan link
- X
- Aplikasi Lainnya
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
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
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.
- Dapatkan link
- X
- Aplikasi Lainnya
Komentar
Posting Komentar