计数到一个节点的IN和OUT关系?

问题描述

我正在使用此查询来计算与节点的入和出关系:

    match (a)-[]->(b)
    where b.val = 11
    return count(a.val) as n
    union
    match (b)-[]->(c)
    where b.val = 11
    return count(c.val) as n 

这是一个方法吗,对我来说似乎太麻烦了。有更好的方法吗?

解决方法

首先,通常需要在模式中指定适当的节点标签,以免系统被迫扫描每个节点。而且您可能还想添加一个index

Degreeness checks之所以非常快,是因为它们实际上不需要遍历任何关系或聚合任何东西:

MATCH (a:Foo)
WHERE a.val = 11
RETURN SIZE((a)<--()) AS inCount,SIZE((a)-->()) AS outCount