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

如何获取节点n跳范围内的相邻节点及逐段关系?

获取指定节点n跳范围内的所有相邻节点关系段

你需要提取指定节点n跳范围内所有相邻节点对及它们之间的直接关系,而非完整的长路径。可以通过拆分匹配到的路径来实现,具体Cypher查询如下:

MATCH path=(s:Type1 {id: "some_id"})-[*1..n]-(endNode)
UNWIND range(0, length(relationships(path)) - 1) AS idx
WITH 
  nodes(path)[idx] AS fromNode,
  relationships(path)[idx] AS rel,
  nodes(path)[idx + 1] AS toNode
RETURN DISTINCT fromNode, rel, toNode

逻辑说明:

  • 匹配所有n跳内的路径:MATCH path=(s:Type1 {id: "some_id"})-[*1..n]-(endNode) 会获取从s出发、最多经过n条边的所有完整路径。
  • 拆分路径为关系段:通过UNWIND range(0, length(relationships(path)) - 1) AS idx遍历路径中每一条关系的索引,再通过nodes(path)[idx]和nodes(path)[idx+1]取出关系对应的首尾节点。
  • 去重结果:使用DISTINCT避免不同路径重复返回同一段相邻关系(比如多条路径经过同一对相邻节点时,去重后只保留一次)。

这个查询可以通用适配任意n值,只需替换查询中的n为你需要的最大跳数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:35:01