Перейти к содержанию

SORT

Оператор SORT принудительно отсортирует массив уже полученных промежуточных результатов в текущем блоке. SORT позволяет указать один или несколько критериев и направлений сортировки.

Синтаксис

Общий синтаксис следующий:

SORT expression direction

Использование

Пример запроса, который сортирует по LastName (в порядке возрастания), затем по FirstName (в порядке возрастания), затем по id (в порядке убывания):

1
2
3
FOR u IN users
  SORT u.lastName, u.firstName, u.id DESC
  RETURN u

Указание направления необязательно. По умолчанию (неявное) направление для выражения сортировки - это порядок по возрастанию. Чтобы явно указать направление сортировки, можно использовать ключевые слова ASC (по возрастанию) и DESC. Несколько критериев сортировки могут быть разделены запятыми. В этом случае направление указывается для каждого выражения отдельно. Например

1
SORT doc.lastName, doc.firstName

сначала отсортирует документы по фамилии в порядке возрастания, а затем по имени в порядке возрастания.

1
SORT doc.lastName DESC, doc.firstName

сначала отсортирует документы по LastName в порядке убывания, а затем по FirstName в порядке возрастания.

1
SORT doc.lastName, doc.firstName DESC

сначала отсортирует документы по LastName в порядке возрастания, а затем по FirstName в порядке убывания.

При итерации по массивам, основанным на коллекциях, порядок документов всегда не определен, если не задан явный порядок сортировки с помощью SORT.

Постоянные выражения SORT могут быть использованы для указания того, что не требуется определенный порядок сортировки.

1
SORT null

Постоянные выражения SORT будут отсортированы оптимизатором AQL во время оптимизации, но их явное указание может позволить дальнейшую оптимизацию, если оптимизатору не нужно учитывать какой-либо конкретный порядок сортировки. Это особенно актуально после оператора COLLECT, который должен выдать отсортированный результат. Указание дополнительного SORT null после оператора COLLECT позволяет оптимизатору AQL полностью убрать пост-сортировку результатов сбора. Также смотрите COLLECT опция method.

Комментарии