问题描述
我有一个问题,我如何才能获得一些具有相同属性(例如同名属性)的节点。在 sql 中,我会使用 GROUP BY,但在 CYPHER 中,我不知道应该使用什么来对它们进行分组。下面我添加了我的简单输入和示例输出来可视化我的问题。
[
{
id:1,name: 'name1'
},{
id:2,name: 'name2'
},{
id:3,{
id:4,name: 'name3'
},{
id:5,{
id:6,{
id:7,name: 'name4'
},{
id:8,name: 'name5'
},{
id:9,name: 'name6'
},{
id:10,name: 'name6'
}
]
我的解决方案应该给我这个:
[
{
count:2,{
count:3,{
count:2,name: 'name6'
}
]
预先感谢您的帮助
解决方法
在 Cypher 中,当您聚合(对于直接的情况)时,分组键由非聚合项形成。
如果已经从输入创建了节点(假设它们使用标签 :Entry),那么我们可以获得您想要的输出:
MATCH (e:Entry)
RETURN e.name as name,count(e) as count
这里的分组键是name
,它作为聚合的结果变得不同。结果是每个不同的 name
值对应一行,以及具有该名称的节点数。