Cypher查询返回具有特定关系类型的路径

问题描述:

我已经设置了一个Neo4j图形数据库。Cypher查询返回具有特定关系类型的路径

而且我已经以下节点和关系类型:

Left panel - Database Information

我的问题是如何让两个节点之间的路径,从站只与关系型“BUS”?

​​

谢谢。

您可以使用这样一个简单的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关系ab之间的最短路径。

+0

这个doenst工作它加载和加载和加载..(如20分钟)没有不返回结果 – Hans

+0

嗯...你有一个大图吗?如果你指定一个跳跃间隔(比如'[:BUS * 1..3]')? –

+0

那就是:它不是一个与图形大小有关的问题(加载和加载和加载...)? –