Cypher查询返回具有特定关系类型的路径
问题描述:
答
您可以使用这样一个简单的Cypher查询:
MATCH p = (:Station {id:1})-[:BUS*]->(:Station {id:31})
RETURN p
此查询将MATCH
以下任意长度(后由*
表示:BUS
类型的唯一关系(:Station{id:1})
和(:Station {id:31})
之间的路径(p
)关系类型)。
您也可以指定查询将遵循的跳数,并将其放在*
(例如:[:BUS * 1..3]将遵循至少1和最多3跳之后)。看看MATCH clause docs。
编辑:
从汉斯评论:
我感兴趣的最短路径
可以使用shortestPath()功能。通过这种方式:
MATCH (a:Station {id:1}), (b:Station {id:31}), p = shortestPath((a)-[*]-(b))
WHERE ALL (r IN relationships(p) WHERE type(r) = 'BUS')
RETURN p
从文档:决定什么最短匹配路径 是之前申请的最短路径 模式WHERE子句中使用
谓词评估。上述
查询将返回仅评估:BUS
关系a
和b
之间的最短路径。
这个doenst工作它加载和加载和加载..(如20分钟)没有不返回结果 – Hans
嗯...你有一个大图吗?如果你指定一个跳跃间隔(比如'[:BUS * 1..3]')? –
那就是:它不是一个与图形大小有关的问题(加载和加载和加载...)? –