ArangoDB v3.10 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, count

The 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 u

Above 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 u

The 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 u

In above example, the documents of users are sorted, the first two results get skipped, and the query returns the next five user documents.

Variables, expressions, and subqueries cannot be used for 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

On this page