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

上述红色部分是,将两个集合合并,并且去掉重复数据的关键点。
相关推荐
方安乐6 小时前
命理学研究
其他
闪闪发亮的小星星2 天前
欧拉角的定义
其他
探序基因3 天前
R语言读取h5格式的文件
其他
t057773 天前
立足通用航空生态 德意志飞机与COMTRONIC开启D328eco合作新篇章
其他
方见华Richard3 天前
递归对抗引擎RAE V4.0(AGI自主进化版)
经验分享·笔记·其他·交互·学习方法
老陈头聊SEO3 天前
长尾关键词在SEO优化中的应用及其对流量提升的影响分析
其他·搜索引擎·seo优化
晚霞的不甘5 天前
Flutter for OpenHarmony:迈向专业:购物APP的架构演进与未来蓝图
其他·flutter·架构·fiddler·前端框架·harmonyos
t057776 天前
精工美学新标杆!VELO ANGEL RIDE 坐垫尽显骑行美学
其他
t057776 天前
解锁跑骑肌肉密码!维乐 Angel 3D 坐垫让训练更高效
其他
老陈头聊SEO7 天前
生成引擎优化(GEO)在提升内容价值与搜索引擎排名中的关键作用
其他·搜索引擎·seo优化