的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 
+0

我已经通过复制codition更新了变通解决问题,提供优化的解决方案表示赞赏 – Jeevanantham

旁白:这感觉就像一个Neo4j的错误。如果您正在使用最新版本的Neo4j遇到此,你可能希望提交一个neo4j issue

作为一种可能的解决方法,由于查询实际上并未使用r标识符,请尝试从查询中将其删除。

+0

同时用了尝试'r'它与随机标识符抛出'没有找到关键:UNNAMED41'。在neo4j git hub中也创建了这个问题 – Jeevanantham