LIMIT

LIMIT constrains the number of returned rows.

LIMIT accepts any expression that evaluates to a positive integer — however the expression cannot 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 is not referring to any external variables:

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