Delen via


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 verschillende undefined typen in de resultaten worden weergegeven. Als u de sorteervolgorde van niet-gedefinieerde waarden wilt beheren, wijst u eigenschappen undefined 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 meerdere ORDER BY eigenschappen. Als u een query met meerdere ORDER 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 een ORDER 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 bevindt undefined, worden opgehaald.