ORDER BY (NoSQL-fråga)
GÄLLER FÖR: NoSQL
Den valfria ORDER BY
satsen anger sorteringsordningen för resultat som returneras av frågan.
Syntax
ORDER BY <sort_specification>
<sort_specification> ::= <sort_expression> [, <sort_expression>]
<sort_expression> ::= {<scalar_expression> [ASC | DESC]} [ ,...n ]
Argument
Description | |
---|---|
<sort_specification> |
Anger en egenskap eller ett uttryck som frågeresultatuppsättningen ska sorteras på. En sorteringskolumn kan anges som ett namn eller egenskapsalias. Flera egenskaper kan anges. Egenskapsnamn måste vara unika. Sekvensen för sorteringsegenskaperna ORDER BY i -satsen definierar organisationen för den sorterade resultatuppsättningen. Det innebär att resultatuppsättningen sorteras efter den första egenskapen och sedan sorteras den ordnade listan efter den andra egenskapen och så vidare. Egenskapsnamnen ORDER BY som refereras i -satsen måste motsvara antingen en egenskap i urvalslistan eller till en egenskap som definierats i samlingen som anges i FROM -satsen utan tvetydigheter. |
<sort_expression> |
Anger en eller flera egenskaper eller uttryck som frågeresultatuppsättningen ska sorteras på. |
<scalar_expression> |
Uttryck som representerar det värde som ska beräknas. |
ASC Eller DESC |
Anger att värdena i den angivna kolumnen ska sorteras i stigande eller fallande ordning. ASC sorterar från det lägsta värdet till det högsta värdet. DESC sorterar från högsta till lägsta värde. Om det här argumentet inte anges ASC är (stigande) standardsorteringsordningen. null värden behandlas som de lägsta möjliga värdena. |
Anteckning
Mer information om skalära uttryck finns i skalära uttryck
Exempel
För exemplen i det här avsnittet används den här referensuppsättningen med objekt. Varje objekt innehåller en name
egenskap med first
och last
underegenskaper.
[
{
"name": {
"first": "Casey",
"last": "Jensen"
},
"team": "Human resources"
},
{
"name": {
"first": "Amari",
"last": "Rivera"
},
"team": "Human resources"
},
{
"name": {
"first": "Kayla",
"last": "Lewis"
},
"team": "Human resources"
}
]
I det första exemplet ORDER BY
används -satsen för att sortera ett fält efter standardsorteringsordningen, stigande.
SELECT VALUE {
firstName: e.name.first,
lastName: e.name.last
}
FROM
employees e
ORDER BY
e.name.last
[
{
"firstName": "Casey",
"lastName": "Jensen"
},
{
"firstName": "Kayla",
"lastName": "Lewis"
},
{
"firstName": "Amari",
"lastName": "Rivera"
}
]
I nästa exempel anges sorteringsordningen uttryckligen som fallande.
SELECT VALUE {
firstName: e.name.first,
lastName: e.name.last
}
FROM
employees e
ORDER BY
e.name.last DESC
[
{
"firstName": "Amari",
"lastName": "Rivera"
},
{
"firstName": "Kayla",
"lastName": "Lewis"
},
{
"firstName": "Casey",
"lastName": "Jensen"
}
]
I det här sista exemplet sorteras objekten med två fält, i en specifik ordning med hjälp av uttryckligen angiven ordning. En fråga som sorterar med två eller flera fält kräver ett sammansatt index.
SELECT VALUE {
firstName: e.name.first,
lastName: e.name.last
}
FROM
employees e
ORDER BY
e.name.last DESC,
e.name.first ASC
Kommentarer
- Frågor med
ORDER BY
returnerar alla objekt, inklusive objekt där egenskapen i ORDER BY-satsen inte har definierats. Vanligtvis kan du inte styra ordningen som olikaundefined
typer visas i resultatet. Om du vill kontrollera sorteringsordningen för odefinierade värden tilldelar du allaundefined
egenskaper ett godtyckligt värde för att säkerställa att de sorterar antingen före eller efter de definierade värdena. - Satsen
ORDER BY
kräver att indexeringsprincipen innehåller ett index för de fält som sorteras. Frågekörningen stöder sortering mot ett egenskapsnamn eller beräknade egenskaper. Körningen stöder också fleraORDER BY
egenskaper. För att köra en fråga med fleraORDER BY
egenskaper definierar du ett sammansatt index för de fält som sorteras. - Om egenskaperna som sorteras kan vara
undefined
för vissa objekt och du vill hämta dem i enORDER BY
fråga måste du uttryckligen inkludera den här sökvägen i indexet. Standardindexeringsprincipen tillåter inte hämtning av objekt där sorteringsegenskapen ärundefined
.