Freigeben über


$sortArray

Der $sortArray Operator wird verwendet, um die Elemente eines Arrays zu sortieren. Der Operator kann nützlich sein, wenn Sie Arrays innerhalb Ihrer Dokumente basierend auf bestimmten Feldern oder Kriterien sortieren müssen. Sie kann auf Arrays eingebetteter Dokumente oder einfache Wertearrays angewendet werden.

Syntax

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

Die Parameter

Parameter Description
input Das array, das sortiert werden soll.
sortBy Gibt den sortierten Auftrag an. Es kann sich um ein einzelnes Feld oder mehrere Felder mit der entsprechenden Sortierreihenfolge (1 für aufsteigend, -1 für absteigend) sein.

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 eines Arrays eingebetteter Dokumente

Diese Abfrage sortiert das Array innerhalb jedes sales.salesByCategory Dokuments in absteigender Reihenfolge basierend auf totalSales.

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

Diese Abfrage gibt das folgende Ergebnis zurück.

[
    {
        "_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
            }
        ]
    }
]

– Überprüfen Sie die Optionen für die Migration von MongoDB zu Azure DocumentDB. - Weitere Informationen zur Featurekompatibilität mit MongoDB..