Bagikan melalui


$sortArray

Operator $sortArray digunakan untuk mengurutkan elemen array. Operator dapat berguna saat Anda perlu mengurutkan array dalam dokumen Anda berdasarkan bidang atau kriteria tertentu. Ini dapat diterapkan ke array dokumen yang disematkan atau array nilai sederhana.

Syntax

{
  $sortArray: {
    input: <arrayExpression>,
    sortBy: <sortSpecification>
  }
}

Parameter-parameternya

Pengaturan Description
input Array yang akan diurutkan.
sortBy Menentukan urutan pengurutan. Ini bisa berupa satu bidang atau beberapa bidang dengan urutan pengurutan yang sesuai (1 untuk naik, -1 untuk menurun).

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 Array Dokumen yang Disematkan

Kueri ini mengurutkan sales.salesByCategory array dalam setiap dokumen dalam urutan turun berdasarkan totalSales.

db.stores.aggregate([{
    $match: {
        _id: "d3c9df51-41bd-4b4e-a26b-b038d9cf8b45"
    }
}, {
    $project: {
        sortedSalesByCategory: {
            $sortArray: {
                input: "$sales.salesByCategory",
                sortBy: {
                    totalSales: -1
                }
            }
        }
    }
}])

Kueri ini mengembalikan hasil berikut.

[
    {
        "_id": "d3c9df51-41bd-4b4e-a26b-b038d9cf8b45",
        "sortedSalesByCategory": [
            {
                "categoryName": "DJ Accessories",
                "totalSales": 60000
            },
            {
                "categoryName": "Music Accessories",
                "totalSales": 40000
            },
            {
                "categoryName": "DJ Speakers",
                "totalSales": 36972
            },
            {
                "categoryName": "DJ Headphones",
                "totalSales": 12877
            }
        ]
    }
]

- Tinjau opsi untuk bermigrasi dari MongoDB ke Azure DocumentDB. - Baca selengkapnya tentang kompatibilitas fitur dengan MongoDB..