如何计算Neo4j图中的节点类型数?

时间:2018-02-10 23:51:05

标签: neo4j cypher

.wpcf7-list-item.first {
    display: none;
}

我想知道使用此查询的图中每个节点类型的计数。但是,Neo4j浏览器会发出警告,说明此查询会生成笛卡尔积。有没有更好的方法来编写查询?

2 个答案:

答案 0 :(得分:1)

是。您希望确保您的查询使用NodeCountFromCountStore运算符(如果您解析查询,则可以在查询计划中查看此内容,以便在实际执行之前进行检查)。

这个棘手的部分是,使用此计划的唯一方法是,如果您匹配标签的所有节点,然后获取计数(您的WITH或RETURN中没有其他变量!)。

您可以尝试这种方法,即联合查询,并通过在计数后添加标签列来保留NodeCountFromStore

match (n:Product)
with count(n) as count
return 'Product' as label, count
union all
match (n:Student)
with count(n) as count
return 'Student' as label, count
union all
match (n:Boy)
with count(n) as count
return 'Boy' as label, count
union all
match (n:Attribute)
with count(n) as count
return 'Attribute' as label, count

答案 1 :(得分:1)

要获取数据库的各种统计信息,包括每个标签的节点数,您可以使用APOC函数apoc.meta.stats

以下查询仅获取标签节点计数,并将标签名称的映射返回到节点计数:

CALL apoc.meta.stats() YIELD labels
RETURN labels;