apoc.nodes.group

详细信息

语法

apoc.nodes.group(labels, groupByProperties [, aggregations, config ]) :: (nodes, relationships, node, relationship)

描述

允许基于给定属性对 NODE 值进行聚合。此过程返回虚拟 NODE 值。

输入参数

名称

类型

描述

标签

LIST<STRING>

需要聚合的节点标签列表。使用 ['*'] 表示应查看所有节点标签。

groupByProperties

LIST<STRING>

用于对节点进行分组的属性键。

aggregations

LIST<MAP>

第一个映射指定要聚合的节点属性及其对应的聚合函数,第二个映射指定用于聚合的关系属性。默认值为:[{*=count}, {*=count}]

config

MAP

{ includeRels :: STRING | LIST<STRING> excludeRels :: STRING | LIST<STRING>, orphans = true :: BOOLEAN, selfRels = true :: BOOLEAN, limitNodes = -1 :: INTEGER, limitRels = -1 :: INTEGER, relsPerNode = -1 :: INTEGER, filter :: MAP }。默认值为:{}

返回参数

名称

类型

描述

节点

LIST<NODE>

以虚拟节点形式表示的分组节点列表。

relationships

LIST<RELATIONSHIP>

以虚拟关系形式表示的分组关系列表。

节点

NODE

分组节点。

关系 (relationship)

RELATIONSHIP

分组关系。

使用示例

本节中的示例基于以下示例图

CREATE
 (alice:Person {name:'Alice', gender:'female', age:32, kids:1}),
 (bob:Person   {name:'Bob',   gender:'male',   age:42, kids:3}),
 (eve:Person   {name:'Eve',   gender:'female', age:28, kids:2}),
 (graphs:Forum {name:'Graphs',    members:23}),
 (dbs:Forum    {name:'Databases', members:42}),
 (alice)-[:KNOWS {since:2017}]->(bob),
 (eve)-[:KNOWS   {since:2018}]->(bob),
 (alice)-[:MEMBER_OF]->(graphs),
 (alice)-[:MEMBER_OF]->(dbs),
 (bob)-[:MEMBER_OF]->(dbs),
 (eve)-[:MEMBER_OF]->(graphs);
CALL apoc.nodes.group(
  ['*'],
  ['gender'],
  [{`*`:'count', age:'min'}, {`*`:'count'} ]
)
YIELD relationships
UNWIND relationships as rel
RETURN apoc.rel.startNode(rel) AS start, rel, apoc.rel.endNode(rel) AS end;
结果
开始 关系 结束

(:Person {gender: "female", min_age: 28, `count_*`: 2})

[:MEMBER_OF {`count_*`: 3}]

(:Forum {gender: NULL, `count_*`: 2})

(:Person {gender: "female", min_age: 28, `count_*`: 2})

[:KNOWS {`count_*`: 2}]

(:Person {gender: "male", min_age: 42, `count_*`: 1})

(:Person {gender: "female", min_age: 28, `count_*`: 2})

[:KNOWS {`count_*`: 2}]

(:Person {gender: "male", min_age: 42, `count_*`: 1})

(:Person {gender: "male", min_age: 42, `count_*`: 1})

[:MEMBER_OF {`count_*`: 1}]

(:Forum {gender: NULL, `count_*`: 2})