在SET查询(Neo4j)中"在此上下文中无效使用聚合函数"

ret*_*phy 2 database aggregates neo4j cypher

我想知道为什么在Neo4j的Cypher中这被认为是对聚合函数的无效使用:

MATCH (p:Project)-[:EMPLOYS]-(n:Person) SET p.youngest = MIN(n.age);
Run Code Online (Sandbox Code Playgroud)

虽然以下被认为是有效的用例:

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

我应该如何重写第一个查询以使其有效?

cyb*_*sam 8

至于"为什么"你的原始Cypher尝试不起作用,@ mah的答案确实有效:Cypher只允许聚合函数用于WITHRETURN子句.


ret*_*phy 7

稍微更改一下查询就可以了:

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

  • 我在这个答案中修了一个小错误,并重新格式化了Cypher. (3认同)