我已在Neo4j中创建了伦敦地铁的地图。车站通过 :CONNECTED_TO 关系相连,时间值表示停靠站点之间所需的时间(目前这些是我为测试随机放置的值)。存在于多条线路上的车站为每条线路都有一个节点,并通过 :PART_OF 关系相连。使用以下查询语句:
我能够得到下面的最短路径:
这条路线经过了4个不同的线路,没有问题地找到了路线。
如果我更改查询从Royal Oak到Bounds Green(Piccadilly线上从Wood Green出发的下一个车站),我会得到“未找到结果”的答复。节点“Bounds Green”存在,Wood Green和Bounds Green之间的关系也存在。
我无法想象这是链中节点数量的限制。但我在使用Neo4j方面没有太多经验,有点卡住了。
非常感谢您提供任何见解。
-ifor
MATCH (from {name:"Wood Green"}), (to {name:"Royal Oak"}),
p = shortestPath((from)-[*]-(to))
WITH REDUCE(time = 0, rel in rels(p) | time + rel.time) AS time, p
RETURN p, time
ORDER BY time ASC LIMIT 1
我能够得到下面的最短路径:
![Shortest route from Wood Green to Royal Oak](https://istack.dev59.com/86e85.webp)
如果我更改查询从Royal Oak到Bounds Green(Piccadilly线上从Wood Green出发的下一个车站),我会得到“未找到结果”的答复。节点“Bounds Green”存在,Wood Green和Bounds Green之间的关系也存在。
我无法想象这是链中节点数量的限制。但我在使用Neo4j方面没有太多经验,有点卡住了。
非常感谢您提供任何见解。
-ifor
(a)-[*..30]->(b)
来增加它。 - Michael Hunger[*]
会给出一个无限的链。改成[*..30]
解决了问题。再次感谢。 - iforwms