ORDER BY (NoSQL-query)
VAN TOEPASSING OP: NoSQL
De optionele ORDER BY
component geeft de sorteervolgorde op voor resultaten die door de query worden geretourneerd.
Syntaxis
ORDER BY <sort_specification>
<sort_specification> ::= <sort_expression> [, <sort_expression>]
<sort_expression> ::= {<scalar_expression> [ASC | DESC]} [ ,...n ]
Argumenten
Beschrijving | |
---|---|
<sort_specification> |
Hiermee geeft u een eigenschap of expressie op waarop de queryresultatenset moet worden gesorteerd. Een sorteerkolom kan worden opgegeven als een naam- of eigenschapsalias. Er kunnen meerdere eigenschappen worden opgegeven. Eigenschapsnamen moeten uniek zijn. De volgorde van de sorteereigenschappen in de ORDER BY component definieert de organisatie van de gesorteerde resultatenset. Dat wil gezegd: de resultatenset wordt gesorteerd op de eerste eigenschap en vervolgens wordt die geordende lijst gesorteerd op de tweede eigenschap, enzovoort. De eigenschapsnamen waarnaar in de ORDER BY component wordt verwezen, moeten overeenkomen met een eigenschap in de selectielijst of met een eigenschap die is gedefinieerd in de verzameling die in de FROM component is opgegeven, zonder dubbelzinnigheid. |
<sort_expression> |
Hiermee geeft u een of meer eigenschappen of expressies op waarop de queryresultatenset moet worden gesorteerd. |
<scalar_expression> |
Expressie die de waarde vertegenwoordigt die moet worden berekend. |
ASC of DESC |
Hiermee geeft u op dat de waarden in de opgegeven kolom in oplopende of aflopende volgorde moeten worden gesorteerd. ASC sorteert van de laagste waarde naar de hoogste waarde. DESC sorteert van de hoogste waarde naar de laagste waarde. Als dit argument niet is opgegeven, ASC (oplopend) is de standaardsortatievolgorde. null waarden worden behandeld als de laagst mogelijke waarden. |
Voorbeelden
Voor de voorbeelden in deze sectie wordt deze referentieset met items gebruikt. Elk item bevat een name
eigenschap met first
en last
subproperties.
[
{
"name": {
"first": "Casey",
"last": "Jensen"
},
"team": "Human resources"
},
{
"name": {
"first": "Amari",
"last": "Rivera"
},
"team": "Human resources"
},
{
"name": {
"first": "Kayla",
"last": "Lewis"
},
"team": "Human resources"
}
]
In dit eerste voorbeeld wordt de ORDER BY
component gebruikt om een veld te sorteren op basis van de standaardsorteervolgorde, oplopend.
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"
}
]
In dit volgende voorbeeld wordt de sorteervolgorde expliciet opgegeven om aflopend te zijn.
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"
}
]
In dit laatste voorbeeld worden de items gesorteerd met behulp van twee velden, in een specifieke volgorde met expliciet opgegeven volgorde. Voor een query die wordt gesorteerd met behulp van twee of meer velden, is een samengestelde index vereist.
SELECT VALUE {
firstName: e.name.first,
lastName: e.name.last
}
FROM
employees e
ORDER BY
e.name.last DESC,
e.name.first ASC
Opmerkingen
- Query's waarbij
ORDER BY
alle items worden geretourneerd, inclusief items waarin de eigenschap in de ORDER BY-component niet is gedefinieerd. Normaal gesproken kunt u niet bepalen in welke volgorde verschillendeundefined
typen in de resultaten worden weergegeven. Als u de sorteervolgorde van niet-gedefinieerde waarden wilt beheren, wijst u eigenschappenundefined
een willekeurige waarde toe om ervoor te zorgen dat ze vóór of na de gedefinieerde waarden sorteren. - De
ORDER BY
component vereist dat het indexeringsbeleid een index bevat voor de velden die worden gesorteerd. De queryruntime ondersteunt sorteren op basis van een eigenschapsnaam of berekende eigenschappen. De runtime ondersteunt ook meerdereORDER BY
eigenschappen. Als u een query met meerdereORDER BY
eigenschappen wilt uitvoeren, definieert u een samengestelde index voor de velden die worden gesorteerd. - Als de eigenschappen die worden gesorteerd mogelijk
undefined
voor sommige items zijn en u deze in eenORDER BY
query wilt ophalen, moet u dit pad expliciet opnemen in de index. Het standaardindexeringsbeleid staat niet toe dat de items waar de sorteereigenschap zich bevindtundefined
, worden opgehaald.