LIMIT

LIMIT constrains the number of returned rows.

LIMIT accepts any expression that evaluates to a positive integer and does not refer to nodes or relationships.

graph limit clause

Return a limited subset of the rows

To return a limited subset of the rows, use this syntax:

Query
MATCH (n)
RETURN n.name
ORDER BY n.name
LIMIT 3

Limit to 3 rows by the example query.

Table 1. Result
n.name

"A"

"B"

"C"

Rows: 3

Using an expression with LIMIT to return a subset of the rows

LIMIT accepts any expression that evaluates to a positive integer, as long as it can be statically calculated (i.e. calculated before the query is run).

Query
MATCH (n)
RETURN n.name
ORDER BY n.name
LIMIT 1 + toInteger(3 * rand())

Limit 1 row plus randomly 0, 1, or 2. So randomly limit to 1, 2, or 3 rows.

Table 2. Result
n.name

"A"

"B"

"C"

Rows: 3

LIMIT will not stop side effects

The use of LIMIT in a query will not stop side effects, like CREATE, DELETE, or SET, from happening if the limit is in the same query part as the side effect. This behaviour was undefined in Neo4j versions before 4.3.

Query
CREATE (n)
RETURN n
LIMIT 0

This query returns nothing, but creates one node:

Table 3. Result

(empty result)

Rows: 0
Nodes created: 1

Query
MATCH (n {name: 'A'})
SET n.age = 60
RETURN n
LIMIT 0

This query returns nothing, but writes one property:

Table 4. Result

(empty result)

Rows: 0
Properties set: 1

If we want to limit the number of updates we can split the query using the WITH clause:

Query
MATCH (n)
WITH n ORDER BY n.name LIMIT 1
SET n.locked = true
RETURN n

Writes locked property on one node and return that node:

Table 5. Result
n

{locked:true,name:"A",age:60}

Rows: 1
Properties set: 1