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集合

上述红色部分是,将两个集合合并,并且去掉重复数据的关键点。
相关推荐
雁于飞9 小时前
c语言贪吃蛇(极简版,基本能玩)
c语言·开发语言·笔记·学习·其他·课程设计·大作业
快鲸数字社区系统2 天前
开源物业管理系统助力高效管理与服务提升
其他
月印千江6714 天前
从密码学原理与应用新方向到移动身份认证与实践
经验分享·笔记·其他·网络安全·密码学
老陈头聊SEO6 天前
AI在SEO中的关键词优化策略探讨
其他
红点租赁系统开发10 天前
提升租赁效率的租赁小程序全解析
其他
明天好,会的10 天前
代码的形状:重构的方向
笔记·其他
合洁科技电子净化工程10 天前
合洁科技:晶圆洁净车间的净化空调系统和一般空调系统有何区别
经验分享·科技·其他·微信
红点租赁系统开发10 天前
小程序租赁系统
其他
红点租赁系统开发11 天前
支付宝租赁小程序提升租赁行业效率与用户体验
其他