AGGREGATION FRAMEWORK (DATABASE ADVANCE)
AGGREGATION FRAMEWORK
1. Persiapan
- Buka VSCode, open folder arahkan ke C:\xampp\htdocs dan view terminal - Buat direktori baru untuk proyek, misalnya crud-api2
cd crud-api4
- Instal semua dependency yang diperlukan:
- Tambahkan script berikut di package.json untuk menjalankan aplikasi:
"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
2. Buat Database dan Koleksi
- Buat database dengan nama: polibest4
- Buat data koleksi customers dan isikan data berikut:
- Buat data koleksi orders dan isikan data berikut:
{ "_id": 101, "order_date": "2024-10-01", "customer_id": 1, "products": [ { "name":
"Laptop", "quantity": 1 }, { "name": "Mouse", "quantity": 2 } ], "amount": 1500 },
{ "_id": 102, "order_date": "2024-10-02", "customer_id": 2, "products": [ { "name":
"Keyboard", "quantity": 1 } ], "amount": 100 },
{ "_id": 103, "order_date": "2024-10-03", "customer_id": 1, "products": [ { "name":
"Monitor", "quantity": 1 } ], "amount": 300 },
{ "_id": 104, "order_date": "2024-10-04", "customer_id": 3, "products": [ { "name":
"Phone", "quantity": 1 }, { "name": "Headphones", "quantity": 1 } ], "amount": 800 }
]
3. Buat File index.js
- Buat file index.js di dalam folder crud-api4 dan isikan kode berikut:
4. Menjalankan dan Menguji Aplikasi dengan Agregasi Group
- GET Request: http://localhost:3000/orders/group (Pada Aplikasi Postman)
- Menampilkan jumlah total amount yang dibelanjakan oleh masing-masing customer_id.
- Contoh output
{ "_id": 1, "totalAmount": 1800 },
{ "_id": 2, "totalAmount": 100 },
{ "_id": 3, "totalAmount": 800 }
]
5. Menjalankan dan Menguji Aplikasi dengan Agregasi Match
- GET Request: http://localhost:3000/orders/match (Pada Aplikasi Postman)
- Mengambil data pesanan dengan amount lebih besar dari atau sama dengan 300, lalu mengurutkan berdasarkan amount secara menurun (descending).
- Contoh output:
{ "_id": 101, "order_date": "2024-10-01", "customer_id": 1, "products": [...],
"amount": 1500 },
{ "_id": 104, "order_date": "2024-10-04", "customer_id": 3, "products": [...],
"amount": 800 },
{ "_id": 103, "order_date": "2024-10-03", "customer_id": 1, "products": [...],
"amount": 300 }
]
6. Menjalankan dan Menguji Aplikasi dengan Agregasi Lookup
- GET Request: http://localhost:3000/orders/lookup (Pada Aplikasi Postman)
- This endpoint will join the orders collection with the customers collection, displaying customer information along with each order.
- Contoh output:
"_id": 101,
"order_date": "2024-10-01",
"customer_id": 1,
"products": [...],
"amount": 1500,
"customer_info": [
{ "_id": 1, "name": "John Doe", "email": "john@example.com" }
]
}
7. Menjalankan dan Menguji Aplikasi dengan Agregasi Unwind
8. Tugas
- Jalankan ke-4 aggregate diatas dengan MongoDB Shell dan screenshot hasil
- Klik pada koleksi orders untuk melihat data.
- Di bagian atas, klik tab Aggregation untuk membuka fitur agregasi.
- Klik pada menu "Open MongoDB shell" pada bagian kanan atas
- Lalu Masukkan Code dibawah ini
- Dan akan keluar output seperti dibawah ini
Agregasi Group
Agregasi Match
Agregasi Lookup
- Jalankan ke-4 aggregate diatas dengan MongoDB Compass dan screenshot hasil
- Klik pada koleksi orders untuk melihat data.
- Di bagian atas, klik tab Aggregation untuk membuka fitur agregasi.
- Di editor pipeline, kamu bisa menuliskan query agregasi satu per satu untuk setiap tugas agregasi yang diminta (Group, Match, Lookup, dan Unwind).
- Lalu Masukkan Code dibawah ini
- Dan akan keluar output seperti dibawah ini
Komentar
Posting Komentar