Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De aggregate opdracht wordt gebruikt om gegevensrecords te verwerken en berekende resultaten te retourneren. Het voert bewerkingen uit op de gegevens, zoals filteren, groeperen en sorteren, en kan de gegevens op verschillende manieren transformeren. De aggregate opdracht is zeer veelzijdig en wordt vaak gebruikt voor gegevensanalyse en rapportage.
Syntaxis
db.collection.aggregate(pipeline, options)
- pijplijn: Een matrix van aggregatiefasen die de gegevens verwerken en transformeren.
-
opties: Optioneel. Hiermee geeft u meer opties voor de aggregatie, zoals
explain,allowDiskUseencursor.
Voorbeelden
Voorbeeld 1: De totale verkoop per categorie berekenen
In dit voorbeeld ziet u hoe u de totale verkoop voor elke categorie in de stores verzameling kunt berekenen.
db.stores.aggregate([
{
$unwind: "$sales.salesByCategory"
},
{
$group: {
_id: "$sales.salesByCategory.categoryName",
totalSales: { $sum: "$sales.salesByCategory.totalSales" }
}
}
])
Voorbeelduitvoer
[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 }
]
Voorbeeld 2: Winkels zoeken met fulltime personeel groter dan 10
In dit voorbeeld ziet u hoe u winkels filtert waarbij het aantal fulltime medewerkers groter is dan 10.
db.stores.aggregate([
{
$match: {
"staff.totalStaff.fullTime": { $gt: 10 }
}
}
])
Voorbeelduitvoer
[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' ]
}
]
Voorbeeld 3: Alle promotieevenementen weergeven met kortingen die groter zijn dan 15%
In dit voorbeeld worden alle promotieevenementen vermeld waarbij elke korting groter is dan 15%.
db.stores.aggregate([
{
$unwind: "$promotionEvents"
},
{
$unwind: "$promotionEvents.discounts"
},
{
$match: {
"promotionEvents.discounts.discountPercentage": { $gt: 15 }
}
},
{
$group: {
_id: "$promotionEvents.eventName",
discounts: { $push: "$promotionEvents.discounts" }
}
}
])
Voorbeelduitvoer
[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
}
]
}
]
Verwante inhoud
- Bekijk de opties voor migreren van MongoDB naar Azure DocumentDB
- Meer informatie over functiecompatibiliteit met MongoDB