neo4j 统计多个节点之间关系总和的写法-包含多个collect合并成一个并去重操作

在使用neo4j数据库时,会遇到计算与指定节点产生关联的数量统计需求,例如指定6个节点1,2,3,4,5,6需要找出与这6个节点中4个节点有关联的节点(要求排除这6个节点的数据)

先看实现查询语句:

复制代码
MATCH (start:person_info)-[r1]-(n)-[r2]-(end:person_info) 
WHERE start.persocountId in ['1','2','3','4','5','6'] 
and   end.persocountId in  ['1','2','3','4','5','6']                                                                                                                            
and   start.persocountId <> end.persocountId and start.persocountId <> n.persocountId and end.persocountId <> n.persocountId  
WITH  collect(start.persocountId) + collect(end.persocountId) AS ids, n.persocountId AS idMidle
UNWIND ids AS id
WITH collect(DISTINCT id) AS countId,idMidle where length(countId)>=4
RETURN countId, idMidle

上述语句中

复制代码
person_info:是实体表
r1:是他们之间的关系
['1','2','3','4','5','6']:指定的6个节点的id号

语句思路:
  1、与这6个人都有关系,那么start:person_info和end:person_info 必须是这6个节点中的实体。
   2、start,n,end 三个节点不能相等。
   3、将start和end节点放入一个集合中collect(start.persocountId) + collect(end.persocountId) AS ids
   4、将集合中的重复数据去除掉 UNWIND ids AS id WITH collect(DISTINCT id)
   5、集合中节点数量大于等于4的是需要查找的节点
   6、返回与6个节点中4个节点有关联的节点的,节点id以及产生关系的节点的id集合

上述红色部分是,将两个集合合并,并且去掉重复数据的关键点。
相关推荐
糖炒栗子032612 小时前
ReAct 论文精简梳理
其他
资质小秘书18 小时前
2026 年 08 月行业科普:ISP 许可证常识与实操避坑指南
其他·信息与通信
jikemaoshiyanshi1 天前
Amazon Quick 是什么?适合企业哪些办公场景?——从知识问答、数据分析到流程执行的一体化 AI 工作台
其他
a314zyz1 天前
如何借助张源知总结疫情后的旅行社经营策略与在线旅游业务发展策略?
其他
商业看点解说1 天前
总结PPT AI工具实测|自动排版工具全维度实测详解
其他
xushichang123_2 天前
企业 AI Agent 需要同时调用数据库、知识库和外部工具,哪些云上数据平台更适合?亚马逊云科技多数据源协同架构
其他
邵老师讲教育2 天前
2026年实测:宁波3大科学小升初机构横向评测
其他
TorchWeiye2 天前
线路板曝光机如何决定PCB制造精度上限
其他
知识燃料2 天前
750B MoE 大模型上云推理,应该选择哪些云平台的 GPU、网络和调度架构?AWS 2P2D 全栈部署路径
其他
知识燃料2 天前
企业 Agentic AI 推理请求变复杂、延迟和成本上升时,应该选择哪些云上推理架构?四类 AWS 路径怎么选
其他