ORDER BY (NoSQL クエリ)

適用対象: NoSQL

省略可能な ORDER BY 句では、クエリによって返される結果の並べ替え順序を指定します。

構文

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

引数

説明
<sort_specification> クエリの結果セットの並べ替えの条件にするプロパティまたは式を指定します。 並べ替え列は、名前またはプロパティの別名として指定できます。 複数のプロパティを指定することができます。 プロパティ名は一意である必要があります。 ORDER BY 句の並べ替えプロパティの順序により、並べ替えられた結果セットの構成が定義されます。 つまり、結果セットは最初のプロパティで並べ替えられ、その並べ替えられたリストが 2 番目のプロパティで並べ替えられ、以下同様に続きます。 ORDER BY 句で参照されるプロパティ名は、選択リスト内のプロパティに、またはあいまいさのない FROM 句で指定されたコレクションで定義されているプロパティに対応する必要があります。
<sort_expression> クエリの結果セットの並べ替えの条件にする 1 つ以上のプロパティまたは式を指定します。
<scalar_expression> 計算する値を表す式。
または DESC 指定した列の値を昇順と降順のどちらで並べ替えるかを指定します。 ASC を指定した場合、最小値から最大値の順序で並べ替えられます。 DESC を指定した場合、最大値から最小値の順序で並べ替えられます。 この引数を指定しない場合、既定の並べ替え順序は ASC (昇順) です。 null 値は最小値として扱われます。

Note

スカラー式の詳細については、「スカラー式」を参照してください

このセクションの例では、この項目の参照セットを使用します。 各項目には、first および last サブプロパティを含む name プロパティが含まれています。

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

この最初の例では、ORDER BY 句を使用して、フィールドを既定の並べ替え順序 (昇順) で並べ替えます。

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

この次の例では、並べ替え順序が明示的に降順に指定されています。

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

この最後の例では、項目は 2 つのフィールドを使用して、明示的に指定された順序を使用した特定の順序で並べ替えられます。 2 つ以上のフィールドを使用して並べ替えるクエリには、複合インデックスが必要です。

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

解説

  • ORDER BY を含むクエリでは、すべての項目が返されます。ORDER BY 句にプロパティが定義されていない項目もその対象となります。 通常は、さまざまな undefined 型が結果に現れる順序を制御することはできません。 未定義の値の並べ替え順序を制御するには、定義された値の前または後にそれらが並べ替えられるように、undefined プロパティに任意の値を割り当てます。
  • ORDER BY 句では、並べ替えるフィールドのインデックスがインデックス作成ポリシーに含まれている必要があります。 クエリ ランタイムでは、プロパティ名または計算されたプロパティに対する並べ替えがサポートされています。 このランタイムでは、複数の ORDER BY プロパティもサポートされています。 複数の ORDER BY プロパティを使ったクエリを実行するには、並べ替えるフィールドに対する複合インデックスを定義します。
  • 並べ替えるプロパティが一部のドキュメントに対して undefined である可能性があり、ORDER BY クエリでそれらを取得したい場合は、インデックスにこのパスを明示的に含める必要があります。 既定のインデックス作成ポリシーでは、並べ替えプロパティが undefined である項目を取得することができません。