Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den $sort fasen i aggregeringspipelinen används för att beställa dokumenten i pipelinen efter ett angivet fält. Det här steget hjälper dig att sortera data, till exempel ordna försäljning efter belopp eller händelser efter datum.
Syntax
{
$sort: {
< field1 >: < sort order > ,
< field2 >: < sort order >
}
}
Parameterar
| Parameter | Description |
|---|---|
field |
Fältet som ska sorteras efter |
sort order |
I vilken ordning vi ska sortera fältet. 1 för stigande ordning och -1 för fallande ordning. |
Examples
Överväg det här exempeldokumentet från butiksamlingen.
{
"_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
}
]
}
]
}
Exempel 1: Sortera efter total försäljning i sescendingordning
Så här sorterar du försäljningskategorierna efter deras totala försäljning i fallande ordning:
db.collection.aggregate([
{
$unwind: "$store.sales.salesByCategory"
},
{
$sort: { "store.sales.salesByCategory.totalSales": -1 }
}
])
De första två resultaten som returneras av den här frågan är:
[
{
"_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
}
]
}
}
}
]
Exempel 2: Sortering efter händelsestartdatum i stigande ordning
Så här sorterar du kampanjhändelserna efter startdatum i stigande ordning:
db.collection.aggregate([
{
$unwind: "$store.promotionEvents"
},
{
$sort: { "store.promotionEvents.promotionalDates.startDate": 1 }
}
])
De första två resultaten som returneras av den här frågan är:
[
{
"_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"
}
}
]
}
}
]
Exempel 3: Sortera en matris med objekt
Exemplet sorterar matrisen salesByCategory på plats baserat på fältet totalSales i stigande ordning.
db.stores.updateOne({
_id: "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5"
}, {
$push: {
"sales.salesByCategory": {
$each: [],
$sort: {
totalSales: 1
}
}
}
}
)