Бөлісу құралы:


ORDER BY (запрос NoSQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

Это необязательное предложение ORDER BY задает порядок сортировки результатов, возвращаемых запросом.

Синтаксис

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

Аргументы

Description
<sort_specification> Указывает свойство или выражение, по которому производится сортировка результирующего набора запроса. Столбец сортировки можно указать в качестве имени или псевдонима. Можно задать несколько свойств. Имена свойств должны быть уникальными. Последовательность свойств сортировки в предложении ORDER BY определяет организацию упорядоченного результирующего набора. То есть результирующий набор сортируется по первому свойству, а затем упорядоченный список сортируется по второму свойству и т. д. Имена свойств, упоминаемых в предложении ORDER BY, должны соответствовать свойству в списке выборки или свойству, определенному в коллекции, которая указана в предложении FROM, без каких-либо неоднозначностей.
<sort_expression> Задает одно или несколько свойств или выражений для сортировки результирующего набора запроса.
<scalar_expression> Выражение, представляющее вычисляемое значение.
ASC или DESC Указывает порядок сортировки значений в указанном столбце — по возрастанию или по убыванию. Значение ASC сортирует от низких значений к высоким. Значение DESC сортирует от высоких значений к низким. Если этот аргумент не указан, ASC (возрастание) — это порядок сортировки по умолчанию. null Значения обрабатываются как наименьшие возможные значения.

Примечание.

Дополнительные сведения о скалярных выражениях см . в скалярных выражениях

Примеры

В примерах этого раздела используется этот ссылочный набор элементов. Каждый элемент содержит name свойство с first 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"
  }
]

В этом первом примере 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свойство сортировки.