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.
Die $facet-Phasenaggregationspipelines ermöglichen die Ausführung mehrerer paralleler Aggregationen innerhalb einer einzelnen Pipelinephase. Es ist nützlich, mehrere Analysen für dasselbe Dataset in einer einzelnen Abfrage durchzuführen.
Syntax
{
"$facet": {
"outputField1": [ { "stage1": {} }, { "stage2": {} } ],
"outputField2": [ { "stage1": {} }, { "stage2": {} } ]
}
}
Die Parameter
| Parameter | Description |
|---|---|
outputFieldN |
Der Name des Ausgabefelds. |
stageN |
Die Aggregationsphase, die ausgeführt werden soll. |
Examples
Betrachten Sie dieses Beispieldokument aus der Stores-Sammlung.
{
"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
"name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
"location": {
"lat": -89.2384,
"lon": -46.4012
},
"staff": {
"totalStaff": {
"fullTime": 8,
"partTime": 20
}
},
"sales": {
"totalSales": 75670,
"salesByCategory": [
{
"categoryName": "Wine Accessories",
"totalSales": 34440
},
{
"categoryName": "Bitters",
"totalSales": 39496
},
{
"categoryName": "Rum",
"totalSales": 1734
}
]
},
"promotionEvents": [
{
"eventName": "Unbeatable Bargain Bash",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 6,
"Day": 23
},
"endDate": {
"Year": 2024,
"Month": 7,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Whiskey",
"discountPercentage": 7
},
{
"categoryName": "Bitters",
"discountPercentage": 15
},
{
"categoryName": "Brandy",
"discountPercentage": 8
},
{
"categoryName": "Sports Drinks",
"discountPercentage": 22
},
{
"categoryName": "Vodka",
"discountPercentage": 19
}
]
},
{
"eventName": "Steal of a Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 29
}
},
"discounts": [
{
"categoryName": "Organic Wine",
"discountPercentage": 19
},
{
"categoryName": "White Wine",
"discountPercentage": 20
},
{
"categoryName": "Sparkling Wine",
"discountPercentage": 19
},
{
"categoryName": "Whiskey",
"discountPercentage": 17
},
{
"categoryName": "Vodka",
"discountPercentage": 23
}
]
}
]
}
Beispiel 1: Facettensuche zu Verkäufen und Werbeaktionen
Zur gleichzeitigen Analyse von Verkäufen und Werbeaktionen für bestimmte Produktkategorien. Die salesAnalysis-Pipeline entwickelt die salesByCategory, filtert nach bestimmten Kategorien und gruppiert sie zu einer Summe von totalSales. Die Angebotsanalysepipeline entwickelt Werbeereignisse und deren Rabatte, Filter für bestimmte Kategorien wie Laptops und Smartphones und gruppiert sie, um den durchschnittlichen Rabattprozentsatz zu berechnen. Die Eingabedokumente aus der stores-Sammlung werden nur einmal aus der Datenbank abgerufen und zwar am Anfang dieses Vorgangs.
db.stores.aggregate([
{
$facet: {
salesAnalysis: [
{ $unwind: "$sales.salesByCategory" },
{ $match: { "sales.salesByCategory.categoryName": { $in: ["Laptops", "Smartphones", "Cameras", "Watches"] } } },
{ $group: { _id: "$sales.salesByCategory.categoryName", totalSales: { $sum: "$sales.salesByCategory.totalSales" } } }
],
promotionAnalysis: [
{ $unwind: "$promotionEvents" },
{ $unwind: "$promotionEvents.discounts" },
{ $match: { "promotionEvents.discounts.categoryName": { $in: ["Laptops", "Smartphones", "Cameras", "Watches"] } } },
{ $group: { _id: "$promotionEvents.discounts.categoryName", avgDiscount: { $avg: "$promotionEvents.discounts.discountPercentage" } } }
]
}
}
]).pretty()
Diese Abfrage gibt das folgende Ergebnis zurück:
[
{
"salesAnalysis": [
{ "_id": "Smartphones", "totalSales": 440815 },
{ "_id": "Laptops", "totalSales": 679453 },
{ "_id": "Cameras", "totalSales": 481171 },
{ "_id": "Watches", "totalSales": 492299 }
],
"promotionAnalysis": [
{ "_id": "Smartphones", "avgDiscount": 14.32 },
{ "_id": "Laptops", "avgDiscount": 14.780645161290323 },
{ "_id": "Cameras", "avgDiscount": 15.512195121951219 },
{ "_id": "Watches", "avgDiscount": 15.174418604651162 }
]
}
]
Verwandte Inhalte
- Überprüfen Sie die Optionen für die Migration von MongoDB zu Azure DocumentDB.
- Weitere Informationen zur Featurekompatibilität mit MongoDB.