【发布时间】:2016-12-06 07:50:46
【问题描述】:
我知道有一个节点类型 (a:Source) 将在其他节点 (x) 上具有类型为 [:RefRel] 的出边。我想获取(a) 和(x) 之间的所有其他路径,它们之间至少涉及一个节点。
考虑我的图表如下:
查询应返回两个路径:a-b-c-d 和 a-b-c-e。这些路径上的节点和关系可以是任何类型。
用密码创建图表:
CREATE (a:Source)-[:RelA]->(b)-[:RelB]->(c)-[:RelC]->(d)
CREATE (c)-[:RelD]->(e)
CREATE (a)-[:RefRel]->(d)
CREATE (a)-[:RefRel]->(e)
我写的查询如下:
MATCH (a:Source)-[:RefRel]-(b)
MATCH path=(a)-[*2..]-(b) //2.. because that means at least one node on the path
RETURN path
但它返回了整个图表。当我检查行时,由于图中的循环,它返回了很多行。
所以在查询中包含过滤器如下:
MATCH (a:Source)-[:RefRel]-(b)
MATCH path=(a)-[c*2..]-(b)
WHERE filter(rel IN c WHERE rel.name<>"RefRel")
RETURN path
但是它什么也没返回。 这里有什么问题?
【问题讨论】: