Neo4j cypher查询获取起始节点和结束节点之间的所有节点

时间:2018-03-03 23:45:46

标签: neo4j cypher

我创建了一个Route / Stops(Rail / Bus)/ Operators模型,并尝试通过指定开始/结束停止来查找路径。当我运行以下查询时,我得到一个额外的停止节点(“PUD”),我认为不应该包含在结果中!如果您让我知道为什么包含“PUD”以及这是否是正确的方法,请感谢您?

MATCH p = (a:Station)-[r:Goto|Operates|HasStop|Changeto*0..]-(c:Station) 
WHERE (a.name='LDS' AND 234 IN a.time) 
AND c.name='MVC' 
RETURN p

型号:Model

结果:Result

1 个答案:

答案 0 :(得分:1)

您的查询与示例图中的多个路径匹配。由于您的查询在匹配中允许多种关系类型,因此查询是无向的,并且未指定短路径,它将逐字地找到模型中从scala.MatchErrora的每种关系组合。

如果您要更改查询以使其仅匹配cGoto关系类型,那么您将获得所需的结果。

或者,如果您查询或使用了Changeto,您也可以获得所需的结果。

shortestPath

...定向

MATCH p =(a:Station)-[r:Goto|Changeto*0..]-(c:Station)
WHERE (a.name='LDS' AND 234 IN a.time) 
AND c.name='MVC' 
RETURN p

...最短路径

MATCH p = (a:Station)-[r:Goto|Operates|HasStop|Changeto*0..]->(c:Station) 
WHERE (a.name='LDS' AND 234 IN a.time) 
AND c.name='MVC' 
RETURN p