"Invalid use of aggregating function in this context" in a SET query (Neo4j)

4.1k Views Asked by At

I wonder why this is considered an invalid use of aggregate functions in Neo4j's Cypher:

MATCH (p:Project)-[:EMPLOYS]-(n:Person) SET p.youngest = MIN(n.age);

While the following is considered a valid use case:

MATCH (p:Project)-[:EMPLOYS]-(n:Person) RETURN p.name, MIN(n.age) AS youngest;

How should I rewrite the first query to make it valid?

2

There are 2 best solutions below

2
On BEST ANSWER

As for "why" your original Cypher attempt does not work, and the answer by @mah does work: Cypher only permits aggregation functions to be used in WITH and RETURN clauses.

1
On

A slight change to the query makes it work:

MATCH (p:Project)-[:EMPLOYS]-(n:Person)
WITH p, MIN(n.age) AS min_age 
SET p.youngest = min_age;