Cypher APOC聚合函数使用报错:Aggregations should not be used like this
问题解决:Cypher查询报错"Aggregations should not be used like this."
错误原因
你在MATCH子句的WHERE条件中直接使用了聚合函数apoc.agg.first,而Cypher语法规定聚合函数只能在WITH或RETURN子句中使用,这就是触发报错的核心原因。
修正后的查询
结合你提到的minItems返回结果是所有键对应同一tree_id的映射,我们可以先在WITH子句中提取出目标tree_id,再进行后续匹配:
MATCH (n) WHERE n.uid IN $uids WITH n as nodes, apoc.agg.minItems(n, n.level).items as highestNode // 提取映射中第一个tree_id(所有值一致) WITH nodes, highestNode, head(values(highestNode)) as targetTreeId MATCH (nodes)-[:TRANSLATES_TO]-(a) WHERE a.tree_id = targetTreeId RETURN nodes, a
说明
values(highestNode)会提取映射中的所有值,因为你确认所有值都是同一个tree_id,用head()取第一个值即可得到目标tree_id。- 将tree_id的提取逻辑放在
WITH子句中,避免在WHERE里使用聚合函数,完全符合Cypher的执行规则。
内容的提问来源于stack exchange,提问作者Jon Flynn
相关产品推荐
相关产品推荐

