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.
Perintah aggregate digunakan untuk memproses rekaman data dan mengembalikan hasil komputasi. Ini melakukan operasi pada data, seperti pemfilteran, pengelompokan, dan pengurutan, dan dapat mengubah data dengan berbagai cara. Perintah aggregate ini sangat serbaguna dan umumnya digunakan untuk analisis dan pelaporan data.
Syntax
db.collection.aggregate(pipeline, options)
- alur: Array tahap agregasi yang memproses dan mengubah data.
-
opsi: Opsional. Menentukan lebih banyak opsi untuk agregasi, seperti
explain, ,allowDiskUsedancursor.
Examples
Contoh 1: Menghitung total penjualan menurut kategori
Contoh ini menunjukkan cara menghitung total penjualan untuk setiap kategori dalam stores koleksi.
db.stores.aggregate([
{
$unwind: "$sales.salesByCategory"
},
{
$group: {
_id: "$sales.salesByCategory.categoryName",
totalSales: { $sum: "$sales.salesByCategory.totalSales" }
}
}
])
Contoh keluaran
[mongos] StoreData> db.stores.aggregate([
... {
... $unwind: "$sales.salesByCategory"
... },
... {
... $group: {
... _id: "$sales.salesByCategory.categoryName",
... totalSales: { $sum: "$sales.salesByCategory.totalSales" }
... }
... }
... ])
[
{ _id: 'Christmas Trees', totalSales: 3147281 },
{ _id: 'Nuts', totalSales: 3002332 },
{ _id: 'Camping Tables', totalSales: 4431667 }
]
Contoh 2: Temukan toko dengan staf penuh waktu lebih besar dari 10
Contoh ini menunjukkan cara memfilter penyimpanan di mana jumlah staf penuh waktu lebih besar dari 10.
db.stores.aggregate([
{
$match: {
"staff.totalStaff.fullTime": { $gt: 10 }
}
}
])
Contoh keluaran
[mongos] StoreData> db.stores.aggregate([
... {
... $match: {
... "staff.totalStaff.fullTime": { $gt: 10 }
... }
... }
... ])
[
{
_id: '7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5',
name: "Lenore's DJ Equipment Store",
location: { lat: -9.9399, lon: -0.334 },
staff: { totalStaff: { fullTime: 18, partTime: 7 } },
sales: {
totalSales: 35911,
salesByCategory: [ { categoryName: 'DJ Headphones', totalSales: 35911 } ]
},
promotionEvents: [
{
discounts: [
{ categoryName: 'DJ Turntables', discountPercentage: 18 },
{ categoryName: 'DJ Mixers', discountPercentage: 15 }
]
}
],
tag: [ '#SeasonalSale', '#FreeShipping', '#MembershipDeals' ]
}
]
Contoh 3: Daftar semua acara promosi dengan diskon lebih besar dari 15%
Contoh ini mencantumkan semua acara promosi di mana diskon apa pun lebih besar dari 15%.
db.stores.aggregate([
{
$unwind: "$promotionEvents"
},
{
$unwind: "$promotionEvents.discounts"
},
{
$match: {
"promotionEvents.discounts.discountPercentage": { $gt: 15 }
}
},
{
$group: {
_id: "$promotionEvents.eventName",
discounts: { $push: "$promotionEvents.discounts" }
}
}
])
Contoh keluaran
[mongos] StoreData> db.stores.aggregate([
... {
... $unwind: "$promotionEvents"
... },
... {
... $unwind: "$promotionEvents.discounts"
... },
... {
... $match: {
... "promotionEvents.discounts.discountPercentage": { $gt: 20 }
... }
... },
... {
... $group: {
... _id: "$promotionEvents.eventName",
... discounts: { $push: "$promotionEvents.discounts" }
... }
... }
... ])
[
{
[
{ categoryName: 'Basketball Gear', discountPercentage: 23 },
{ categoryName: 'Wool Carpets', discountPercentage: 22 },
{
categoryName: 'Portable Bluetooth Speakers',
discountPercentage: 24
}
]
}
]
Konten terkait
- Meninjau opsi untuk Migrasi dari MongoDB ke Azure DocumentDB
- Baca selengkapnya tentang Kompatibilitas fitur dengan MongoDB