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集合上述红色部分是,将两个集合合并,并且去掉重复数据的关键点。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有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中心服务