SORT¶
Оператор SORT
принудительно отсортирует массив уже полученных промежуточных результатов в текущем блоке. SORT
позволяет указать один или несколько критериев и направлений сортировки.
Синтаксис¶
Общий синтаксис следующий:
SORT expression direction
Использование¶
Пример запроса, который сортирует по LastName (в порядке возрастания), затем по FirstName (в порядке возрастания), затем по id (в порядке убывания):
1 2 3 |
|
Указание направления необязательно. По умолчанию (неявное) направление для выражения сортировки - это порядок по возрастанию. Чтобы явно указать направление сортировки, можно использовать ключевые слова ASC
(по возрастанию) и DESC
. Несколько критериев сортировки могут быть разделены запятыми. В этом случае направление указывается для каждого выражения отдельно. Например
1 |
|
сначала отсортирует документы по фамилии в порядке возрастания, а затем по имени в порядке возрастания.
1 |
|
сначала отсортирует документы по LastName в порядке убывания, а затем по FirstName в порядке возрастания.
1 |
|
сначала отсортирует документы по LastName в порядке возрастания, а затем по FirstName в порядке убывания.
При итерации по массивам, основанным на коллекциях, порядок документов всегда не определен, если не задан явный порядок сортировки с помощью SORT
.
Постоянные выражения SORT
могут быть использованы для указания того, что не требуется определенный порядок сортировки.
1 |
|
Постоянные выражения SORT
будут отсортированы оптимизатором AQL во время оптимизации, но их явное указание может позволить дальнейшую оптимизацию, если оптимизатору не нужно учитывать какой-либо конкретный порядок сортировки. Это особенно актуально после оператора COLLECT
, который должен выдать отсортированный результат. Указание дополнительного SORT null
после оператора COLLECT
позволяет оптимизатору AQL полностью убрать пост-сортировку результатов сбора. Также смотрите COLLECT
опция method
.