Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Apakah Anda ingin memigrasikan aplikasi MongoDB yang sudah ada atau menggunakan fitur MongoDB Query Language (MQL)? Pertimbangkan Azure DocumentDB.
Apakah Anda mencari solusi database untuk skenario skala tinggi dengan perjanjian tingkat layanan ketersediaan (SLA) 99,999%, skala otomatis instan, dan failover otomatis di beberapa wilayah? Pertimbangkan Azure Cosmos DB untuk NoSQL.
Alur agregasi adalah alat canggih yang memungkinkan pengembang untuk melakukan analisis dan manipulasi data tingkat lanjut pada koleksi mereka. Alur adalah urutan operasi pemrosesan data, yang dilakukan pada dokumen input untuk menghasilkan output komputasi. Tahapan alur memproses dokumen input dan meneruskan hasilnya ke tahap berikutnya. Setiap tahap melakukan operasi tertentu pada data, seperti pemfilteran, pengelompokan, pengurutan, dan transformasi.
Sintaks dasar
Sintaks dasar untuk alur agregasi adalah sebagai berikut:
db.collection.aggregate([ { stage1 }, { stage2 }, ... { stageN }])
Di mana db.collection adalah koleksi MongoDB yang ingin Anda lakukan agregasinya, dan stage1, stage2, ..., stageN adalah tahap alur yang ingin Anda terapkan.
Tahapan Sampel
Cosmos DB for MongoDB menyediakan berbagai tahapan yang dapat Anda gunakan dalam alur Anda, termasuk:
- $match: Memfilter dokumen untuk meneruskan hanya dokumen yang cocok dengan kondisi yang ditentukan.
- $project: Mengubah dokumen ke formulir baru dengan menambahkan, menghapus, atau memperbarui bidang.
- $group: Mengelompokkan dokumen menurut satu atau beberapa bidang dan melakukan berbagai fungsi agregat pada data yang dikelompokkan.
- $sort: Mengurutkan dokumen berdasarkan bidang yang ditentukan.
- $skip: Melewati jumlah dokumen yang ditentukan.
- $limit: Membatasi jumlah dokumen yang diteruskan ke tahap berikutnya.
- $unwind: Menganalisis bidang array pada dokumen input sehingga menghasilkan dokumen untuk tiap elemen.
Untuk melihat semua tahapan yang tersedia, lihat fitur yang didukung
Contoh
Berikut adalah beberapa contoh bagaimana Anda dapat menggunakan alur agregasi untuk melakukan berbagai operasi pada data Anda:
Pemfilteran: Untuk memfilter dokumen yang memiliki bidang "kuantitas" yang lebih besar dari 20, Anda bisa menggunakan alur berikut:
db.collection.aggregate([
{ $match: { quantity: { $gt: 20 } } }
])
Pengelompokan: Untuk mengelompokkan dokumen menurut bidang "kategori" dan menghitung total "kuantitas" untuk setiap grup, Anda bisa menggunakan alur berikut:
db.collection.aggregate([
{ $group: { _id: "$category", totalQuantity: { $sum: "$quantity" } } }
])
Pengurutan: Untuk mengurutkan dokumen menurut bidang "harga" dalam urutan menurun, Anda bisa menggunakan alur berikut:
db.collection.aggregate([
{ $sort: { price: -1 } }
])
Transformasi: Untuk menambahkan bidang baru "diskon" ke dokumen yang memiliki "harga" lebih besar dari 100, Anda dapat menggunakan alur berikut:
db.collection.aggregate([
{ $project: { item: 1, price: 1, discount: { $cond: [{ $gt: ["$price", 100] }, 10, 0 ] } } }
])
Pemecahan: Untuk memisahkan semua subdokumen dari bidang array 'tags' dan membuat dokumen baru untuk setiap nilai, Anda dapat menggunakan pipeline berikut:
db.collection.aggregate([
{ $unwind: "$tags" }
])
Contoh dengan beberapa tahap
db.sales.aggregate([
{ $match: { date: { $gte: "2021-01-01", $lt: "2021-03-01" } } },
{ $group: { _id: "$category", totalSales: { $sum: "$sales" } } },
{ $sort: { totalSales: -1 } },
{ $limit: 5 }
])
Dalam contoh ini, kita menggunakan koleksi sampel yang disebut "penjualan" yang memiliki dokumen dengan bidang berikut: "tanggal", "kategori", dan "penjualan".
Tahap pertama { $match: { date: { $gte: "2021-01-01", $lt: "2021-03-01" } } } memfilter dokumen berdasarkan bidang "tanggal", hanya meneruskan dokumen dengan tanggal antara 1 Januari 2021 dan 28 Februari 2021. Kami menggunakan format tanggal string dengan format "YYYY-MM-DD".
Tahap kedua { $group: { _id: "$category", totalSales: { $sum: "$sales" } } } mengelompokkan dokumen menurut bidang "kategori" dan menghitung total penjualan untuk setiap grup.
Tahap ketiga { $sort: { totalSales: -1 } } mengurutkan dokumen menurut bidang "totalSales" dalam urutan menurun.
Tahap keempat { $limit: 5 } membatasi jumlah dokumen yang diteruskan ke tahap berikutnya menjadi hanya 5 teratas.
Akibatnya, alur akan mengembalikan 5 kategori teratas dengan total penjualan untuk rentang tanggal yang ditentukan.
Langkah berikutnya
- Pelajari cara menggunakan Studio 3T dengan Azure Cosmos DB untuk MongoDB.
- Pelajari cara menggunakan Robo 3T dengan Azure Cosmos DB untuk MongoDB.
- Jelajahi sampel MongoDB dengan Azure Cosmos DB untuk MongoDB.
- Mencoba melakukan perencanaan kapasitas untuk migrasi ke Azure Cosmos DB? Anda dapat menggunakan informasi tentang kluster database Anda yang ada saat ini untuk membuat perencanaan kapasitas.
- Jika Anda hanya mengetahui jumlah vCore dan server di kluster database yang ada, bacalah mengenai memperkirakan unit permintaan menggunakan vCore atau vCPU.
- Jika Anda mengetahui tingkat permintaan umum untuk beban kerja database Anda saat ini, baca tentang memperkirakan unit permintaan menggunakan perencana kapasitas Azure Cosmos DB.