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 $sort-Phase in der Aggregationspipeline wird verwendet, um die Dokumente in der Pipeline nach einem bestimmten Feld oder bestimmten Feldern zu sortieren. In dieser Phase können Sie Daten sortieren und etwa Umsätze nach Betrag oder Ereignisse nach Datum anordnen.
Syntax
{
$sort: {
< field1 >: < sort order > ,
< field2 >: < sort order >
}
}
Die Parameter
| Parameter | Description |
|---|---|
field |
Das Feld für die Sortierung |
sort order |
Die Reihenfolge, in der das Feld sortiert werden soll. 1 für aufsteigende Reihenfolge und -1 für absteigende Reihenfolge |
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: Sortieren nach Gesamtumsatz in sescending order
So sortieren Sie die Umsatzkategorien nach deren Gesamtumsatz in absteigender Reihenfolge:
db.collection.aggregate([
{
$unwind: "$store.sales.salesByCategory"
},
{
$sort: { "store.sales.salesByCategory.totalSales": -1 }
}
])
Die ersten beiden Ergebnisse, die von dieser Abfrage zurückgegeben werden, sind:
[
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"store": {
"name": "Downtown Store",
"sales": {
"salesByCategory": [
{
"category": "Electronics",
"totalSales": 15000
},
{
"category": "Clothing",
"totalSales": 12000
},
{
"category": "Home Goods",
"totalSales": 10000
}
]
}
}
},
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c6",
"store": {
"name": "Uptown Store",
"sales": {
"salesByCategory": [
{
"category": "Electronics",
"totalSales": 20000
},
{
"category": "Clothing",
"totalSales": 18000
},
{
"category": "Home Goods",
"totalSales": 15000
}
]
}
}
}
]
Beispiel 2: Sortieren nach Startdatum des Ereignisses in aufsteigender Reihenfolge
So sortieren Sie die Promo-Ereignisse nach ihrem Startdatum in aufsteigender Reihenfolge:
db.collection.aggregate([
{
$unwind: "$store.promotionEvents"
},
{
$sort: { "store.promotionEvents.promotionalDates.startDate": 1 }
}
])
Die ersten beiden Ergebnisse, die von dieser Abfrage zurückgegeben werden, sind:
[
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"store": {
"name": "Downtown Store",
"promotionEvents": [
{
"eventName": "Summer Sale",
"promotionalDates": {
"startDate": "2024-06-01T00:00:00Z",
"endDate": "2024-06-30T23:59:59Z"
}
},
{
"eventName": "Black Friday",
"promotionalDates": {
"startDate": "2024-11-25T00:00:00Z",
"endDate": "2024-11-25T23:59:59Z"
}
},
{
"eventName": "Holiday Deals",
"promotionalDates": {
"startDate": "2024-12-01T00:00:00Z",
"endDate": "2024-12-31T23:59:59Z"
}
}
]
}
},
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c6",
"store": {
"name": "Uptown Store",
"promotionEvents": [
{
"eventName": "Back to School",
"promotionalDates": {
"startDate": "2024-08-01T00:00:00Z",
"endDate": "2024-08-31T23:59:59Z"
}
},
{
"eventName": "Winter Sale",
"promotionalDates": {
"startDate": "2024-12-01T00:00:00Z",
"endDate": "2024-12-31T23:59:59Z"
}
}
]
}
}
]
Beispiel 3: Sortieren eines Arrays von Objekten
Im Beispiel wird das salesByCategory Array basierend auf dem totalSales Feld in aufsteigender Reihenfolge sortiert.
db.stores.updateOne({
_id: "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5"
}, {
$push: {
"sales.salesByCategory": {
$each: [],
$sort: {
totalSales: 1
}
}
}
}
)