Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Polecenie służy do przetwarzania aggregate rekordów danych i zwracania obliczonych wyników. Wykonuje operacje na danych, takie jak filtrowanie, grupowanie i sortowanie, i może przekształcać dane na różne sposoby. Polecenie aggregate jest wysoce uniwersalne i jest często używane do analizy i raportowania danych.
Składnia
db.collection.aggregate(pipeline, options)
- potok: tablica etapów agregacji, które przetwarzają i przekształcają dane.
-
opcje: opcjonalne. Określa więcej opcji agregacji, takich jak
explain,allowDiskUseicursor.
Przykłady
Przykład 1. Obliczanie łącznej sprzedaży według kategorii
W tym przykładzie pokazano, jak obliczyć łączną sprzedaż dla każdej kategorii w kolekcji stores .
db.stores.aggregate([
{
$unwind: "$sales.salesByCategory"
},
{
$group: {
_id: "$sales.salesByCategory.categoryName",
totalSales: { $sum: "$sales.salesByCategory.totalSales" }
}
}
])
Przykładowe dane wyjściowe
[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 }
]
Przykład 2: Znajdowanie sklepów z pracownikami pełnoetatowymi większymi niż 10
W tym przykładzie pokazano, jak filtrować magazyny, w których liczba pełnoetatowych pracowników jest większa niż 10.
db.stores.aggregate([
{
$match: {
"staff.totalStaff.fullTime": { $gt: 10 }
}
}
])
Przykładowe dane wyjściowe
[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' ]
}
]
Przykład 3: Wyświetlanie listy wszystkich zdarzeń promocji z rabatami większymi niż 15%
W tym przykładzie wymieniono wszystkie zdarzenia promocji, w których rabat jest większy niż 15%.
db.stores.aggregate([
{
$unwind: "$promotionEvents"
},
{
$unwind: "$promotionEvents.discounts"
},
{
$match: {
"promotionEvents.discounts.discountPercentage": { $gt: 15 }
}
},
{
$group: {
_id: "$promotionEvents.eventName",
discounts: { $push: "$promotionEvents.discounts" }
}
}
])
Przykładowe dane wyjściowe
[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
}
]
}
]
Treści powiązane
- Przejrzyj opcje migrowania z bazy danych MongoDB do usługi Azure DocumentDB
- Przeczytaj więcej na temat zgodności funkcji z bazą danych MongoDB