共用方式為


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 子句中的排序屬性序列會定義排序的結果集組織。 也就是說,結果集是依第一個屬性排序,而該排序清單會依次要屬性進行排序,以此類推。 ORDER BY 子句中參考的屬性名稱必須對應至選取清單中的屬性,或對應至 FROM 子句所指定集合內明確定義的屬性。
<sort_expression> 指定用於排序查詢結果集的一或多個屬性或運算式。
<scalar_expression> 表示要計算之值的運算式。
ASCDESC 指定指定之資料行的值應該以遞增或遞減順序排序。 ASC 從最低值到最高值進行排序。 DESC 從最高值到最低值進行排序。 如果未指定此自變數, ASC 則 (遞增) 是預設排序順序。 null 值會被視為最低的可能值。

注意

如需純量表達式的詳細資訊,請參閱 純量表達式

範例

針對本節中的範例,會使用這個參考集的專案。 每個專案都包含 name 具有 firstlast 子屬性的屬性。

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

在此最後一個範例中,專案會使用兩個字段來排序,使用明確指定的順序來依特定順序排序。 使用兩個或多個字段排序的查詢需要 複合索引

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的專案。