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

问题描述 投票:2回答:1

我创建了一个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

模型:

结果:

neo4j cypher
1个回答
1
投票

您的查询与示例图中的多个路径匹配。因为您的查询在匹配中允许多种关系类型,所以查询是无向的,并且不指定短路径,它将逐字地找到从模型中的ac的每种关系组合。

如果您要更改查询,以便它只匹配GotoChangeto关系类型,那么您将获得您正在寻找的结果。

或者,如果您查询或使用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

最短路径...

MATCH p = shortestPath((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
© www.soinside.com 2019 - 2024. All rights reserved.