Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Tahap $sort dalam alur agregasi digunakan untuk mengurutkan dokumen dalam alur dengan bidang atau bidang tertentu. Tahap ini membantu Anda mengurutkan data, seperti mengatur penjualan menurut jumlah atau peristiwa menurut tanggal.
Syntax
{
$sort: {
< field1 >: < sort order > ,
< field2 >: < sort order >
}
}
Parameter-parameternya
| Pengaturan | Description |
|---|---|
field |
Bidang yang akan diurutkan menurut |
sort order |
Urutan di mana kita harus mengurutkan bidang . 1 untuk urutan naik dan -1 untuk urutan turun. |
Examples
Pertimbangkan dokumen sampel ini dari koleksi toko.
{
"_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
}
]
}
]
}
Contoh 1: Mengurutkan berdasarkan total penjualan dalam urutan naik
Untuk mengurutkan kategori penjualan menurut total penjualan mereka dalam urutan menurut:
db.collection.aggregate([
{
$unwind: "$store.sales.salesByCategory"
},
{
$sort: { "store.sales.salesByCategory.totalSales": -1 }
}
])
Dua hasil pertama yang dikembalikan oleh kueri ini adalah:
[
{
"_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
}
]
}
}
}
]
Contoh 2: Mengurutkan menurut tanggal mulai peristiwa dalam urutan naik
Untuk mengurutkan acara promosi menurut tanggal mulainya dalam urutan naik:
db.collection.aggregate([
{
$unwind: "$store.promotionEvents"
},
{
$sort: { "store.promotionEvents.promotionalDates.startDate": 1 }
}
])
Dua hasil pertama yang dikembalikan oleh kueri ini adalah:
[
{
"_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"
}
}
]
}
}
]
Contoh 3: Mengurutkan array objek
Contoh mengurutkan salesByCategory array di tempat berdasarkan totalSales bidang dalam urutan naik.
db.stores.updateOne({
_id: "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5"
}, {
$push: {
"sales.salesByCategory": {
$each: [],
$sort: {
totalSales: 1
}
}
}
}
)