Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A aggregate parancs az adatrekordok feldolgozására és a kiszámított eredmények visszaadására szolgál. Műveleteket hajt végre az adatokon, például szűrést, csoportosítást és rendezést, és különböző módokon képes átalakítani az adatokat. A aggregate parancs rendkívül sokoldalú, és gyakran használják adatelemzéshez és jelentéskészítéshez.
Szemantika
db.collection.aggregate(pipeline, options)
- folyamat: Az adatok feldolgozását és átalakítását végző összesítési szakaszok tömbje.
-
beállítások: Nem kötelező. További lehetőségeket ad meg az összesítéshez, például
explain: ,allowDiskUseéscursor.
Példák
1. példa: Összes értékesítés kiszámítása kategória szerint
Ez a példa bemutatja, hogyan számítható ki a gyűjtemény egyes kategóriáinak stores teljes értékesítése.
db.stores.aggregate([
{
$unwind: "$sales.salesByCategory"
},
{
$group: {
_id: "$sales.salesByCategory.categoryName",
totalSales: { $sum: "$sales.salesByCategory.totalSales" }
}
}
])
Példakimenet
[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 }
]
2. példa: 10-nél nagyobb teljes munkaidős személyzettel rendelkező üzletek keresése
Ez a példa bemutatja, hogyan szűrheti azokat az üzleteket, ahol a teljes munkaidős alkalmazottak száma meghaladja a 10-et.
db.stores.aggregate([
{
$match: {
"staff.totalStaff.fullTime": { $gt: 10 }
}
}
])
Példakimenet
[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' ]
}
]
3. példa: Az összes 15-nél nagyobb kedvezményt tartalmazó promóciós esemény listázása%
Ez a példa felsorolja az összes promóciós eseményt, ahol a kedvezmény nagyobb, mint 15%.
db.stores.aggregate([
{
$unwind: "$promotionEvents"
},
{
$unwind: "$promotionEvents.discounts"
},
{
$match: {
"promotionEvents.discounts.discountPercentage": { $gt: 15 }
}
},
{
$group: {
_id: "$promotionEvents.eventName",
discounts: { $push: "$promotionEvents.discounts" }
}
}
])
Példakimenet
[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
}
]
}
]
Kapcsolódó tartalom
- A MongoDB-ből az Azure DocumentDB-be való migrálás beállításainak áttekintése
- További információ a MongoDB-vel való funkciókompatibilitásról