Sdílet prostřednictvím


ORDER BY (dotaz NoSQL)

PLATÍ PRO: NoSQL

Volitelná ORDER BY klauzule určuje pořadí řazení výsledků vrácených dotazem.

Syntaxe

ORDER BY <sort_specification>  
<sort_specification> ::= <sort_expression> [, <sort_expression>]  
<sort_expression> ::= {<scalar_expression> [ASC | DESC]} [ ,...n ]

Argumenty

Popis
<sort_specification> Určuje vlastnost nebo výraz, podle kterého se má sada výsledků dotazu seřadit. Sloupec řazení lze zadat jako název nebo alias vlastnosti. Lze zadat více vlastností. Názvy vlastností musí být jedinečné. Posloupnost vlastností řazení v ORDER BY klauzuli definuje uspořádání seřazené sady výsledků. To znamená, že sada výsledků se seřadí podle první vlastnosti a pak se seřazený seznam seřadí podle druhé vlastnosti atd. Názvy vlastností odkazované v ORDER BY klauzuli musí odpovídat vlastnosti v seznamu select nebo vlastnosti definované v kolekci zadané v FROM klauzuli bez nejednoznačností.
<sort_expression> Určuje jednu nebo více vlastností nebo výrazů, pro které se má sada výsledků dotazu seřadit.
<scalar_expression> Výraz představující hodnotu, která se má vypočítat.
ASC nebo DESC Určuje, že hodnoty v zadaném sloupci by měly být seřazeny vzestupně nebo sestupně. ASC seřadí od nejnižší hodnoty k nejvyšší hodnotě. DESC seřadí od nejvyšší hodnoty k nejnižší hodnotě. Pokud tento argument není zadaný, ASC (vzestupně) je výchozí pořadí řazení. null hodnoty jsou považovány za nejnižší možné hodnoty.

Poznámka:

Další informace o skalárních výrazech najdete v tématu skalární výrazy.

Příklady

V příkladech v této části se používá tato referenční sada položek. Každá položka obsahuje name vlastnost s dílčími obdobímifirst.last

[
  {
    "name": {
      "first": "Casey",
      "last": "Jensen"
    },
    "team": "Human resources"
  },
  {
    "name": {
      "first": "Amari",
      "last": "Rivera"
    },
    "team": "Human resources"
  },
  {
    "name": {
      "first": "Kayla",
      "last": "Lewis"
    },
    "team": "Human resources"
  }
]

V tomto prvním příkladu ORDER BY se klauzule používá k seřazení pole podle výchozího pořadí řazení vzestupně.

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"
  }
]

V tomto dalším příkladu je pořadí řazení explicitně určeno tak, aby bylo sestupné.

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"
  }
]

V tomto posledním příkladu jsou položky seřazené pomocí dvou polí v určitém pořadí pomocí explicitně zadaného řazení. Dotaz, který seřadí pomocí dvou nebo více polí, vyžaduje složený index.

SELECT VALUE {
    firstName: e.name.first,
    lastName: e.name.last
}
FROM
    employees e
ORDER BY
    e.name.last DESC,
    e.name.first ASC

Poznámky

  • Dotazy s vrácením ORDER BY všech položek, včetně položek, ve kterých není definována vlastnost v klauzuli ORDER BY. Obvykle nemůžete řídit pořadí, v jakém se ve výsledcích zobrazují různé undefined typy. Chcete-li řídit pořadí řazení nedefinovaných hodnot, přiřaďte jakékoli undefined vlastnosti libovolnou hodnotu, aby se zajistilo, že seřadí buď před nebo za definovanými hodnotami.
  • Klauzule ORDER BY vyžaduje, aby zásady indexování obsahovaly index pro seřazená pole. Modul runtime dotazu podporuje řazení podle názvu vlastnosti nebo vypočítaných vlastností. Modul runtime také podporuje více ORDER BY vlastností. Pokud chcete spustit dotaz s více ORDER BY vlastnostmi, definujte složený index pro seřazená pole.
  • Pokud můžou být undefined vlastnosti seřazené pro některé položky a chcete je načíst v ORDER BY dotazu, musíte tuto cestu explicitně zahrnout do indexu. Výchozí zásady indexování neumožňují načtení položek, ve kterých je undefinedvlastnost řazení .