Neo4j cypher查询获取起始节点和结束节点之间的所有节点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
模型:
结果:
答案
您的查询与示例图中的多个路径匹配。因为您的查询在匹配中允许多种关系类型,所以查询是无向的,并且不指定短路径,它将逐字地找到从模型中的a
到c
的每种关系组合。
如果您要更改查询,以便它只匹配Goto
和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
最短路径...
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
以上是关于Neo4j cypher查询获取起始节点和结束节点之间的所有节点的主要内容,如果未能解决你的问题,请参考以下文章