Neo4j查询报错:Invalid input '[' 问题修复咨询
解决Neo4j查询语法错误的方案
错误原因分析
- 第三行的
nodes(n1)-[*..2]-(n2)写法违规:nodes()函数必须传入路径变量,不能直接写匹配表达式,这是触发语法报错的核心原因。 - 原查询里用了
COLLECT(p),但MATCH语句未定义路径变量p,后续还会引发额外错误。
修正后的查询语句
MATCH p=(n1:`Anumber`)-[*..2]-(n2) WHERE n1 <> n2 AND all(node in nodes(p) WHERE node:`Anumber` OR node:`Bnumber`) WITH n1, n2, COLLECT(p) AS paths WHERE size(paths) > 1 RETURN n1, n2, size(paths) AS degree, paths
关键修正说明
- 在
MATCH中定义路径变量p:p=(n1:Anumber)-[*..2]-(n2),让p代表这条1-2跳的路径,后续可通过nodes(p)获取路径上的所有节点。 - 将
nodes(n1)-[*..2]-(n2)替换为nodes(p),符合nodes()函数的语法要求,能正确获取路径节点并完成筛选。 - 保留原逻辑:排除n1与n2为同一节点的情况,确保路径上所有节点都是
Anumber或Bnumber类型,最后收集路径并筛选出路径数量大于1的结果。
内容的提问来源于stack exchange,提问作者ilia
相关产品推荐
相关产品推荐

