Neo4J cypher查询以通过具有相同通用属性的路径连接节点

时间:2016-06-29 09:26:43

标签: neo4j cypher graph-databases

我正在尝试创建一个密码查询,该查询返回由给定范围的跃点(即1..5)连接的节点,其中这些跃点之间的所有关系共享相同的属性值,而不指定此属性。

所以我想做一些像

这样的事情
MATCH (a {type: 'cin1'})-[rels:Next*1.. {value: 1}]->(b {type: 'cancer'}) 
RETURN (a), (b)

但是没有指定边缘上的值应该是1,它们只需要在跳跃过程中的所有边缘之间相等。

1 个答案:

答案 0 :(得分:1)

我会在你的路径上添加一个上限。或者使用(所有)shortestPath(s)

另请务必按索引标签+属性组合查找ab

然后,您可以在形成路径的关系集合中使用谓词。

MATCH (a:Label {type: 'cin1'})
MATCH (b:Label {type: 'cancer'})
MATCH shortestPath((a)-[rels:Next*1..20]->(b))
WHERE ALL(r in tail(rels) WHERE (head(rels)).value = r.value)
RETURN (a), (b)