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

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

先看实现查询语句:

1
2
3
4
5
6
7
8
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

 上述语句中

1
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集合上述红色部分是,将两个集合合并,并且去掉重复数据的关键点。
posted @   万笑佛  阅读(115)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2022-09-29 SpringCloud学习 系列五、创建生产者和消费者验证微服务中心 Eureka的作用
2022-09-29 SpringCloud学习 系列四、微服务中心 Eureka介绍及创建一个Eureka中心服务
点击右上角即可分享
微信分享提示