You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Neo4j如何通过多组反向关系查询节点以获取路段内所有线路

Neo4j跨反向关系查询路段关联线路实现方案

默认你的图模型符合常规轨道交通场景设计:Line节点通过HAS_STOP关系关联所属的Trainstop节点,两个Trainstop节点组成一个路段。

  • 核心思路:Cypher查询时不指定关系方向即可同时匹配正向、反向关联,不需要单独处理反向关系。如果需要排除重复的站点对,可以通过对比节点内置id实现去重。
  • 单对指定站点查询代码示例:
// 替换示例站点id为你要查询的路段两端站点id
MATCH (t1:Trainstop {id: "10315"}), (t2:Trainstop {id: "10296"})
MATCH (line:Line)-[:HAS_STOP]-(t1), (line:Line)-[:HAS_STOP]-(t2)
RETURN t1.id + ", " + t2.id + ", " + line.id AS result

直接返回你需要的10315, 10296, 1026格式的字符串结果。

  • 全量路段线路批量查询代码示例:
MATCH (t1:Trainstop), (t2:Trainstop)
MATCH (line:Line)-[:HAS_STOP]-(t1), (line:Line)-[:HAS_STOP]-(t2)
// 排除同一站点对的反向重复结果
WHERE id(t1) < id(t2)
RETURN t1.id AS Trainstop1, t2.id AS Trainstop2, collect(line.id) AS RelatedLines

如果你模型里的路段是用[:NEXT_STOP]/[:SEGMENT]这类直接关联两个Trainstop的关系定义的,可以把查询调整为:

MATCH (t1:Trainstop)-[:SEGMENT]-(t2:Trainstop)
MATCH (line:Line)-[:HAS_STOP]-(t1), (line:Line)-[:HAS_STOP]-(t2)
RETURN t1.id + ", " + t2.id + ", " + line.id AS result

内容的提问来源于stack exchange,提问作者guzman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:06:07