首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >后续重复查找查询中的WITH和COLLECT解释

问后续重复查找查询中的WITH和COLLECT解释
EN

Stack Overflow用户
提问于 2015-07-25 14:50:25
回答 1查看 449关注 0票数 2

最近,我正在研究如何通过属性查找重复节点,并发现以下结果提供了非常有效的解决方案:

neo4j查找所有具有匹配属性的节点

在Neo4j 1.8中查找重复节点的有效方法?

由于我使用的是Neo4j v2.2.3社区,所以我使用了以下样式:

代码语言:javascript
复制
match (n:Label) with n.prop as prop, collect(n) as nodelist, count(*) as count where count > 1 return prop, nodelist, count

我很难理解这是怎么回事。我在职业生涯中一直使用关系数据库,只是没有分组机制,这显然是因为我有一个节点列表和它们各自的计数。

请有人解释一下这是如何工作的,还是提供一个解释的参考?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-25 15:39:30

以下是密码中有关聚合的相关文档。

重要的一点是:

聚合函数接受多个输入值,并从中计算聚合值。示例是计算多个数值的平均值的avg,或在一组值中查找最小数值的min。 聚合可以在所有匹配的子图上完成,也可以通过引入键值来进一步划分。这些是非聚合表达式,用于对聚合函数中的值进行分组。 因此,如果返回语句如下所示: 返回n,计数(*) 我们有两个返回表达式: n和count()。第一个,n,不是聚合函数,因此它将是分组键。后者,count()是一个聚合表达式。因此,根据分组键的不同,匹配的子图将被划分为不同的桶。然后,聚合函数将在这些桶上运行,计算聚合值。 如果要使用聚合对结果集进行排序,则聚合必须包含在要按ORDER的顺序使用的返回中。

您的查询相当简单:

代码语言:javascript
复制
match (n:Label) 
with n.prop as prop, 
     collect(n) as nodelist, 
     count(*) as count 
where count > 1 
return prop, nodelist, count

您只是在with块中而不是在return块中进行聚合。在本例中,collect()不是聚合函数(我知道,术语似乎有点奇怪),但count(*)是。因此,根据分组键的不同,查询被划分为不同的桶;您的查询在这里有点奇怪,因为prop似乎是您的分组键。不确定是否打算这样做,这取决于查询的语义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31627698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档