使用附加过滤器查找节点之间的最短路径

rza*_*jac 9 neo4j cypher

我正在尝试在某些日期模拟机场之间的航班.到目前为止,我的测试图看起来像这样:

图形

寻找例如LTN和WAW之间的最短路径是微不足道的:

MATCH (f:Airport {code: "LTN"}), (t:Airport {code: "WAW"}), 
p = shortestPath((f)-[]-(t)) RETURN p
Run Code Online (Sandbox Code Playgroud)

这给了我:

在此输入图像描述

但我不知道如何只获得具有FLIES_ON与给定日期关系的航班的路径.

链接到Neo4j控制台

Nic*_*ite 4

这就是我将如何处理您给定的模型。其他评论者的查询似乎不正确,因为他们使用ANY()而不是ALL(). 您明确表示您只需要路径上的所有 节点都通过关系Flight附加到给定节点的路径:Date:FLIES_ON

MATCH (LTN:Airport {code:"LTN"}),
      (WAW:Airport {code:"WAW"}), 
      p =(LTN)-[:ROUTE*]-(WAW)
WHERE ALL(x IN FILTER(x IN NODES(p) WHERE x:Flight) 
          WHERE (x)<-[:FLIES_ON]-(:Date {date:"130114"}))
WITH p ORDER BY LENGTH(p) LIMIT 1
RETURN p
Run Code Online (Sandbox Code Playgroud)

http://console.neo4j.org/r/xgz84y