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

LIMIT

Оператор LIMIT позволяет нарезать массив результатов с помощью смещения и подсчета. Это уменьшает количество элементов в результате до максимального указанного числа.

Синтаксис

Две общие формы оператора LIMIT:

LIMIT count
LIMIT offset, count

Первая форма позволяет указать только значение count, в то время как вторая форма позволяет указать и offset и count. Первая форма идентична использованию второй формы со значением offset равным 0.

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

1
2
3
FOR u IN users
  LIMIT 5
  RETURN u

Вышеприведенный запрос возвращает первые пять документов коллекции users. Его также можно записать как LIMIT 0, 5 для получения того же результата. Какие документы возвращаются на самом деле, довольно произвольно, поскольку явный порядок сортировки не указан. Поэтому ограничение обычно должно сопровождаться операцией SORT.

Значение offset указывает, сколько элементов из результата должно быть пропущено. Оно должно быть равно 0 или больше. Значение count указывает, сколько элементов должно быть включено в результат.

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

В приведенном выше примере документы users сортируются, первые два результата пропускаются и возвращаются следующие пять документов пользователей.

{% hint 'info' %} Переменные, выражения и подзапросы не могут быть использованы для offset и count. Значения offset и count должны быть известны во время компиляции запроса, что означает, что вы можете использовать только литералы чисел, параметры связывания или выражения, которые могут быть определены во время компиляции запроса. {% endhint %}

То, где LIMIT используется по отношению к другим операциям в запросе, имеет значение. В частности, операции LIMIT перед FILTER могут существенно изменить результат, поскольку операции выполняются в том порядке, в котором они записаны в запросе. Подробный пример см. в FILTER.

Операция LIMIT никогда не применяется к операциям записи (INSERT, UPDATE, REPLACE, REMOVE, UPSERT), а только к их возвращаемым результатам. В следующем примере создается пять документов, независимо от LIMIT 2. Операция LIMIT ограничивает количество документов, возвращаемых запросом (через RETURN), только первыми двумя:

1
2
3
4
FOR i IN 1..5
  INSERT { value: i } INTO coll
  LIMIT 2
  RETURN NEW

Комментарии