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

Neo4j Cypher查询:查找存在指定数量唯一路径的连通节点,返回1对多结果

Neo4j 查询满足指定唯一路径数的连通节点方案

需求说明

需要查询与其他节点存在至少N条唯一路径的连通节点,要求单条查询返回1对多的聚合结果,N可灵活配置为1、2、3对应不同业务场景。
你当前使用的查询仅能返回1对1的节点映射,核心逻辑可以保留,在此基础上增加分组聚合步骤即可实现需求。

通用可配置查询语句

// 仅需修改min_path_count的数值即可适配不同路径数要求
MATCH (r1:Record)-[:HAS_ID]->(i)<-[:HAS_ID]-(r2:Record)
WHERE id(r1) > id(r2)
WITH r1, r2, COLLECT(DISTINCT i) AS shared_ids
WHERE SIZE(shared_ids) >= $min_path_count
WITH r1.name AS Source, COLLECT(r2.name) AS target_nodes
RETURN Source, apoc.text.join(target_nodes, ', ') AS Target

若未安装APOC插件,可将最后一行替换为RETURN Source, target_nodes AS Target,直接返回列表格式的目标节点集合。

不同阈值的查询结果示例

1. 至少2条唯一路径

min_path_count设为2时,返回结果:

SourceTarget
Row_1ROW_2, ROW_3, ROW_6

2. 至少3条唯一路径

min_path_count设为3时,返回结果:

SourceTarget
Row_2ROW_6

3. 至少1条唯一路径

min_path_count设为1时,返回结果:

SourceTarget
Row_1ROW_2, ROW_3, ROW_4, ROW_5, ROW_6

逻辑说明

  • 路径去重:通过COLLECT(DISTINCT i)对共同关联的ID节点去重,确保每条唯一路径仅统计一次
  • 1对多聚合:按源节点名称分组,将所有符合条件的目标节点聚合为列表,再拼接为逗号分隔的字符串,匹配要求的返回格式
  • 灵活适配:仅需调整最小路径数阈值即可覆盖所有场景,无需修改整体查询逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:06:05