ArangoDB v3.11 reached End of Life (EOL) and is no longer supported.
This documentation is outdated. Please see the most recent stable version.
LIMIT operation in AQL
The LIMIT operation allows you to reduce the number of results to at most the specified number and optionally skip results using an offset for pagination
Syntax
Two general forms of LIMIT are:
LIMIT count
LIMIT offset, countThe first form allows specifying only the count value whereas the second form
allows specifying both offset and count. The first form is identical using
the second form with an offset value of 0.
Usage
FOR u IN users
LIMIT 5
RETURN uAbove query returns five documents of the users collection.
It could also be written as LIMIT 0, 5 for the same result.
Which documents it returns is rather arbitrary because collections have no
defined order for the documents they contain. A LIMIT operation should usually
be accompanied with a SORT operation to explicitly specify a sorting order
unless any five documents are acceptable for you. However, also consider that if
you run a query multiple times with varying LIMIT offsets for pagination,
you can miss results or get duplicate results if the sort order is undefined.
In case multiple documents contain the same SORT attribute value, the result
set does not contain the tied documents in a fixed order as the order between
them is undefined. Additionally, the SORT operation does not guarantee a stable
sort if there is no unique value to sort by.
If a fixed total order is required, you can use a tiebreaker. Sort by an
additional attribute that can break the ties. If the application has a preferred
attribute that indicates the order of documents with the same value, then use
this attribute. If there is no such attribute, you can still achieve a stable
sort by using the _id system attribute as it is unique and present in every
document.
FOR u IN users
SORT u.firstName, u._id // break name ties with the document ID
LIMIT 5
RETURN uThe offset value specifies how many elements from the result shall be
skipped. It must be 0 or greater. The count value specifies how many
elements should be at most included in the result.
FOR u IN users
SORT u.firstName, u.lastName, u.id DESC
LIMIT 2, 5
RETURN uIn above example, the documents of users are sorted, the first two results
get skipped, and the query returns the next five user documents.
offset and count.
The values for offset and count must be known at query compile time,
which means that you can only use number literals, bind parameters or
expressions that can be resolved at query compile time.Where a LIMIT is used in relation to other operations in a query has meaning.
LIMIT operations before FILTERs in particular can change the result
significantly, because the operations are executed in the order in which they
are written in the query. See FILTER
for a detailed example.
The LIMIT operation never applies to write operations (INSERT, UPDATE,
REPLACE, REMOVE, UPSERT) but only their returned results. In the following
example, five documents are created, regardless of the LIMIT 2. The LIMIT
operation only constrains the number of documents returned by the query (via
RETURN) to the first two:
FOR i IN 1..5
INSERT { value: i } INTO coll
LIMIT 2
RETURN NEW