定义关系计数时,Cypher Query失败

时间:2016-09-22 14:32:15

标签: neo4j cypher

Neo4j版本:3.0.4

以下查询的目的是消除路径中的重复总线服务和bustop,如果我没有提供关系计数new_pair,但如果关系计数定义为-[r:CONNECTSWITH]->,则它可以正常工作,然后它的投掷

  

找不到钥匙:r

工作:

-[r:CONNECTSWITH*..3]->

不工作:

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

1 个答案:

答案 0 :(得分:1)

旁白:这感觉就像一个neo4j错误。如果您遇到最新的neo4j版本,可能需要提交neo4j issue

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