Neo4j找到最短路径但排除路径

时间:2016-03-24 16:21:39

标签: graph neo4j

对于学校作业,我试图了解Neo4j如何运作到目前为止我已经能够理解其中的大部分内容但由于某种原因我无法排除路径。

我做了一个测试任务,可以使用类似城市的道路 - >市。现在我想要排除类似以下情况的路径:

“查找从乌得勒支到鹿特丹的所有路线,这些路线不会在路线上带走高达”

我提出了许多解决方案,但它们不起作用,我最接近的是找到所有路径,包括带有以下代码的Gouda路径

MATCH (Utrecht {Naam:"Utrecht"}), (Stad)-[:CONNECTIE_MET]->(Rotterdam:Stad{Naam:"Rotterdam"}), 
p = allShortestPaths( (Utrecht)-[:CONNECTIE_MET*..5]-(Rotterdam))
WHERE NOT(Stad.Naam='Gouda')
RETURN p,Utrecht

我做错了什么?我尝试了几件事,但它不起作用,其他帖子的代码似乎不适用于这种情况。

1 个答案:

答案 0 :(得分:2)

最短路径无法回答您的问题"找到所有路线..."因为它不包括比最短路径长的路线。除此之外,您的问题是最短路径无法处理好的问题,因为它会首先找到最短路径,然后应用过滤器,可能会丢弃最短路径并且不会给您任何结果,而大多数用户想要查找应用过滤器的最短路径。不过,这可能会让你开始:

MATCH p = (:Stad {Naam:"Utrecht"})-[:CONNECTIE_MET*..5]->(:Stad {Naam:"Rotterdam"})
WHERE NONE(x IN NODES(p) WHERE x.Naam = "Gouda")
RETURN p;