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

上述红色部分是,将两个集合合并,并且去掉重复数据的关键点。
相关推荐
老陈头聊SEO1 天前
SEO长尾词优化实战布局
其他
ye150127774552 天前
220V转直流非隔离传感器供电电源芯片WT5105
stm32·单片机·嵌入式硬件·其他·硬件工程
时空无限3 天前
虚无隧穿产生宇宙(true nothing tunneling) 是谁提出的
其他
张高兴5 天前
为什么要对程序进行调试
其他
这是我585 天前
awk命令——功能强大的文本处理工具
linux·其他·shell·awk·强大··
cwtlw8 天前
PhotoShop学习10
笔记·学习·其他·photoshop
stockmasterx8 天前
什么是ETF跟踪误差?场内基金佣金最低是多少?
经验分享·笔记·其他
技术与健康9 天前
学点概率论,打破认识误区
经验分享·其他
安德胜SMT贴片9 天前
SMT贴片:现代电子制造的核心工艺
其他
职坐标在线9 天前
职坐标解码互联网行业转型发展新动能
其他