Delen via


ORDER BY (NoSQL-query)

VAN TOEPASSING OP: NoSQL

De optionele ORDER BY component geeft de sorteervolgorde aan 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

Description
<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 bepaalt 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 zonder dubbelzinnigheden overeenkomen met een eigenschap in de selectielijst of met een eigenschap die is gedefinieerd in de verzameling die is opgegeven in de FROM component.
<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 moeten worden gesorteerd in oplopende of aflopende volgorde. ASC sorteert van de laagste waarde naar de hoogste waarde. DESC sorteert van hoogste waarde naar laagste waarde. Als dit argument niet is opgegeven, ASC is (oplopend) de standaardsortatievolgorde. null -waarden worden behandeld als de laagst mogelijke waarden.

Notitie

Zie scalaire expressies voor meer informatie over scalaire expressies

Voorbeelden

Voor de voorbeelden in deze sectie wordt deze referentieset items gebruikt. Elk item bevat een name eigenschap met first en last subeigenschappen.

[
  {
    "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 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 aflopend opgegeven.

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 op twee of meer velden wordt gesorteerd, 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 met ORDER BY retourneren alle items, inclusief items waarvoor 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 aan alle undefined eigenschappen een willekeurige waarde toe om ervoor te zorgen dat ze vóór of na de gedefinieerde waarden worden gesorteerd.
  • De ORDER BY component vereist dat het indexeringsbeleid een index bevat voor de velden die worden gesorteerd. De queryruntime ondersteunt het 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 voor sommige items zijn undefined en u deze in een ORDER BY query wilt ophalen, moet u dit pad expliciet opnemen in de index. Het standaardindexeringsbeleid staat het ophalen van de items waarvoor de sorteereigenschap is undefinedniet toegestaan.