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

上述红色部分是,将两个集合合并,并且去掉重复数据的关键点。
相关推荐
蜜桃味女焊匠人11 分钟前
焊接生产线优化思路:解决手工焊、机器人焊气体浪费问题
人工智能·经验分享·其他·机器人
奶油奥利啊19 小时前
硕士小论文查重降重,如何处理高重复的专业术语段落?
其他
蜜桃味女焊匠人2 天前
气保焊怎样改造,稳定达成40%-60%节气降耗效果?
人工智能·经验分享·其他·机器人
水质在线监测仪厂家_慕迪科技2 天前
在废水监测过程中产生的废液要处理吗?
其他
WiKiLeaks_successor3 天前
JaPanese Learning day22(どんな 部屋を お探しですか)
其他
老陈头聊SEO4 天前
生成引擎优化(GEO)在数字内容创作中的优势与创新实践
其他·搜索引擎·seo优化
jikemaoshiyanshi4 天前
工业高可用基建数据中心解决方案厂商怎么选?从万可的工程能力来看
其他
迷途呀5 天前
CSDN Markdown 编辑器完全指南:从快捷键到高级图表
笔记·其他
老吴的商业笔记5 天前
GEO系统贴牌深度评测:爱搜索GEO营销系统如何为工业制造企业构建AI搜索护城河
其他
蜜桃味女焊匠人6 天前
手工氩弧焊高耗气整改实战
人工智能·经验分享·其他·机器人