的Cypher查询而定义的关系数
问题描述:
Neo4j的版本失败-[r:CONNECTSWITH]->
但如果关系数定义-[r:CONNECTSWITH*..3]->
,那么它扔的Cypher查询而定义的关系数
钥匙找不到,R
工作:
OPTIONAL MATCH p=(o:PORT{name:"busstop1"})-[r:CONNECTSWITH]->(d:PORT{name:"busstop2"})
WHERE ALL(r1 IN rels(p)
WHERE 1 = size(filter(r2 IN rels(p) WHERE (r1.service = r2.service))))
AND ALL(n IN nodes(p) WHERE 1 = size(filter(m IN nodes(p) WHERE id(m) = id(n))))
RETURN p
LIMIT 10
不工作:
OPTIONAL MATCH p=(o:PORT{name:"busstop1"})-[r:CONNECTSWITH*..3]->(d:PORT{name:"busstop2"})
WHERE ALL(r1 IN rels(p)
WHERE 1 = size(filter(r2 IN rels(p) WHERE (r1.service = r2.service))))
AND ALL(n IN nodes(p) WHERE 1 = size(filter(m IN nodes(p) WHERE id(m) = id(n))))
RETURN p
LIMIT 10
解决方法解决方案:
OPTIONAL MATCH p=(o:PORT{name:"busstop1"})-[r:CONNECTSWITH*..3]->(d:PORT{name:"busstop2"})
WHERE ALL(r1 in rels(p)
WHERE 1 = size(filter(r2 IN rels(p) WHERE (r1.service = r2.service)))) =
ALL(n IN nodes(p) WHERE 1 = size(filter(m IN nodes(p) WHERE id(m) = id(n))))
AND ALL(r1 in rels(p)
WHERE 1 = size(filter(r2 IN rels(p) WHERE (r1.service = r2.service))))
RETURN p
LIMIT 10
答
旁白:这感觉就像一个Neo4j的错误。如果您正在使用最新版本的Neo4j遇到此,你可能希望提交一个neo4j issue。
作为一种可能的解决方法,由于查询实际上并未使用r
标识符,请尝试从查询中将其删除。
+0
同时用了尝试'r'它与随机标识符抛出'没有找到关键:UNNAMED41'。在neo4j git hub中也创建了这个问题 – Jeevanantham
我已经通过复制codition更新了变通解决问题,提供优化的解决方案表示赞赏 – Jeevanantham