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 小时前
一天认识一个硬件之音响与音箱
运维·其他·计算机外设·电脑
这是我5811 小时前
C++黑暗迷宫
c++·其他·游戏·visual studio·随机·迷宫·黑暗
zcxinmiao12 小时前
光伏发电生活废水处理设备产地货源
单片机·其他
哲伦贼稳妥1 天前
一天认识一个硬件之机箱
经验分享·其他·电脑
喵喵的柠檬汁2 天前
实习结帖(flask加上AIGC实现设计符合OpenAPI要求的OpenAPI Schema,让AIGC运行时可以调用api,协助公司门后迁移新后端等)
前端·其他·aigc
渊鱼L2 天前
ANSYS Workbench晶体结构Voronoi泰森多边形建模
其他
小咖拉眯3 天前
Java球球大作战小游戏源码(完整版)
java·开发语言·其他·游戏·课程设计·大作业
wzkttt3 天前
成年人体内放射性核素的活度
其他
哲伦贼稳妥3 天前
一天认识一个硬件之鼠标
经验分享·其他·计算机外设·电脑