Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
ANWENDBAR AUF: MongoDB-vCore
Der $top
-Akkumulatoroperator gibt das oberste Element aus einer Gruppe basierend auf einer angegebenen Sortierreihenfolge zurück. Es kombiniert Sortier- und Auswahlvorgänge in einem einzigen Vorgang und macht es effizient, die höchsten oder niedrigsten Werte zu finden, ohne dass eine separate Sortierstufe erforderlich ist.
Syntax
Die Syntax für den $top
-Akkumulatoroperator lautet wie folgt:
{
$group: {
_id: <expression>,
<field>: {
$top: {
sortBy: { <field1>: <sort order>, <field2>: <sort order>, ... },
output: <expression>
}
}
}
}
Parameter
BESCHREIBUNG | |
---|---|
sortBy |
Gibt die Sortierreihenfolge mithilfe eines Dokuments mit Feldnamen und Sortieranweisungen an (1 für aufsteigend, -1 für absteigend). |
output |
Der Ausdruck, der das Feld oder den Wert angibt, das bzw. der aus dem obersten Dokument zurückgegeben werden soll. |
Beispiel
Lassen Sie uns die Verwendung anhand der JSON-Beispieldatei aus stores
-Dataset verstehen.
{
"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
"name": "Proseware, Inc. | Home Entertainment Hub - East Linwoodbury",
"sales": {
"totalSales": 151864,
"salesByCategory": [
{
"categoryName": "Sound Bars",
"totalSales": 2120
},
{
"categoryName": "Home Theater Projectors",
"totalSales": 45004
},
{
"categoryName": "Game Controllers",
"totalSales": 43522
},
{
"categoryName": "Remote Controls",
"totalSales": 28946
},
{
"categoryName": "VR Games",
"totalSales": 32272
}
]
},
"promotionEvents": [
{
"eventName": "Massive Markdown Mania",
"promotionalDates": {
"startDate": {
"Year": 2023,
"Month": 6,
"Day": 29
}
},
"discounts": [
{
"categoryName": "DVD Players",
"discountPercentage": 14
},
{
"categoryName": "Televisions",
"discountPercentage": 22
}
]
}
]
}
Beispiel 1: Abrufen der Top-Verkaufskategorie pro Store
Suchen Sie die am meisten verkaufte Kategorie für jeden Store.
db.stores.aggregate([
{ $unwind: "$sales.salesByCategory" },
{
$group: {
_id: "$_id",
storeName: { $first: "$name" },
topSellingCategory: {
$top: {
sortBy: { "sales.salesByCategory.totalSales": -1 },
output: {
categoryName: "$sales.salesByCategory.categoryName",
totalSales: "$sales.salesByCategory.totalSales"
}
}
}
}
}
])
Dadurch wird eine Ausgabe mit der Top-Verkaufskategorie für jeden Store erzeugt:
[
{
_id: 'b1d86d1f-8705-4157-b64c-a9eda0df4921',
storeName: 'VanArsdel, Ltd. | Baby Products Haven - West Kingfort',
topSellingCategory: { categoryName: 'Baby Monitors', totalSales: 49585 }
},
{
_id: '22e6367e-8341-415f-9795-118d2b522abf',
storeName: 'Adatum Corporation | Outdoor Furniture Mart - Port Simone',
topSellingCategory: { categoryName: 'Outdoor Benches', totalSales: 4976 }
},
.
.
.
]
Beispiel 2: Abrufen des höchsten Rabatts nach Kategorie
Suchen Sie die Kategorie mit dem höchsten Rabattprozentsatz für alle Werbeaktionen für jeden Store.
db.stores.aggregate([
{ $unwind: "$promotionEvents" },
{ $unwind: "$promotionEvents.discounts" },
{
$group: {
_id: "$_id",
storeName: { $first: "$name" },
highestDiscount: {
$top: {
sortBy: { "promotionEvents.discounts.discountPercentage": -1 },
output: {
categoryName: "$promotionEvents.discounts.categoryName",
discountPercentage: "$promotionEvents.discounts.discountPercentage",
eventName: "$promotionEvents.eventName"
}
}
}
}
}
])
Dadurch wird die Kategorie mit dem höchsten Rabattprozentsatz für jeden Store angezeigt:
[
{
_id: '64ec6589-068a-44a6-be5b-9d37bb0a90f1',
storeName: 'First Up Consultants | Computer Gallery - West Cathrine',
highestDiscount: {
categoryName: 'Gaming Accessories',
discountPercentage: 24,
eventName: 'Crazy Markdown Madness'
}
},
{
_id: 'a58d0356-493b-44e6-afab-260aa3296930',
storeName: 'Fabrikam, Inc. | Outdoor Furniture Nook - West Lexie',
highestDiscount: {
categoryName: 'Fire Pits',
discountPercentage: 22,
eventName: 'Savings Showdown'
}
},
.
.
.
]
Verwandte Inhalte
- Prüfen Sie die Optionen für die Migration von MongoDB zu Azure Cosmos DB for MongoDB (virtueller Kern).
- Erfahren Sie mehr über die Featurekompatibilität mit MongoDB