apoc.schema.properties.distinctCount

  • 此过程不建议在多线程中运行,因此并行运行时(Parallel runtime)不支持该过程。有关更多信息,请参阅 Cypher 手册 → 并行运行时

  • 在 APOC 2025.07 版本发布之前,此过程在本地实例上受到限制。若要在旧版本上使用它,必须解除限制。有关详细信息,请参阅 安装 → 加载和解除限制

详细信息

语法

apoc.schema.properties.distinctCount([ label, key ]) :: (label, key, value, count)

描述

返回给定键的所有不同属性值及其计数。

输入参数

名称

类型

描述

标签 (label)

STRING

要统计不同属性的节点标签。如果设置为 ,将查找所有标签的不同属性值。默认值为:

键 (key)

STRING

要统计不同值的属性名称。如果设置为 ,将查找指定标签和所有属性名称的不同属性值。默认值为:

返回参数

名称

类型

描述

标签 (label)

STRING

节点的标签。

键 (key)

STRING

属性键的名称。

ANY

不同的值。

count

INTEGER(整数)

该值出现的次数。

使用示例

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

CREATE (:Person {name: "Michael", age: 45});
CREATE (:Person {name: "Ryan", age: 33});
CREATE (:Person {name: "Michael", age: 42});
CREATE (:Dog {name: "Shadow", age: 11});

特定标签和属性名称

CALL apoc.schema.properties.distinctCount("Person", "name");
结果
标签 (label) 键 (key) count

"Person"

"name"

“Michael”

2

"Person"

"name"

"Ryan"

1

所有标签和特定属性名称

将输入参数 label 设置为 `` 将返回所有标签和指定属性名称的不同属性值及其计数。

CALL apoc.schema.properties.distinctCount("", "name");
结果
标签 (label) 键 (key) count

"Person"

"name"

“Michael”

2

"Person"

"name"

"Ryan"

1

"Dog"

"name"

"Shadow"

1

特定标签和所有属性名称

将输入参数 key 设置为 `` 将返回指定标签和所有属性名称的不同属性值及其计数。

CALL apoc.schema.properties.distinctCount("Person", "");
结果
标签 (label) 键 (key) count

"Person"

"name"

“Michael”

2

"Person"

"name"

"Ryan"

1

"Person"

"age"

45

1

"Person"

"age"

33

1

"Person"

"age"

42

1

所有标签和所有属性名称

将输入参数 labelkey 设置为 `` 将返回所有标签和所有属性名称的不同属性值及其计数。

CALL apoc.schema.properties.distinctCount("", "");
结果
标签 (label) 键 (key) count

"Person"

"name"

“Michael”

2

"Person"

"name"

"Ryan"

1

"Dog"

"name"

"Shadow"

1

"Person"

"age"

45

1

"Person"

"age"

33

1

"Person"

"age"

42

1

"Dog"

"age"

11

1

在 APOC 2025.11 版本中,此过程经过了重大重构,包含多项错误修复。因此,在多种情况下,其行为与以前的版本相比发生了变化。

行为变更
标签和键组合上的索引 属性值 2025.11 之前的行为 2025.11 之后的行为

无索引

-

如果没有索引,该过程将返回空结果。

无论是否有索引,该过程都将返回相同的结果,但在没有索引时速度可能会较慢。

多种类型的索引

-

可能会根据创建索引的顺序导致错误

永远不会导致错误

非范围索引

混合属性类型

只有与索引类型相同的属性值才会包含在结果中。

所有属性值都将包含在结果中。

范围索引

LIST 类型的相同属性值

每个列表都被视为不同的值,并获得自己的结果行,计数为 1。

这些列表被视为相同的值,因此它们将合并为一行,显示总计数。

范围索引

在同一事务中创建的属性值

不会包含在结果中

将包含在结果中

一个或多个范围索引

labelkey 输入参数设置为 ``

只有索引所覆盖的标签和属性组合才会包含在结果中。

所有相关的标签和属性组合都将包含在结果中。