对于 neo4j 中的节点,我们能否在 O(1) 时间内获得节点的 in/out 度?

Can we get in/out degree of a node in O(1) time for a node in neo4j?

我想获得 neo4j 中给定节点的 in/out 度。一种方法是使用以下查询:

MATCH (u: Node{ name: 'Node 1' })-[]->(v) RETURN count(v);

这需要查找u的关系。

另一种方法是在插入节点时不断更新节点的度数,然后我们可以通过找到节点来获得度数。

这个是我们自己维护还是neo4j自己管理,这样我们只要找到节点就可以得到度数。 我想通过密码查询或在 python 驱动程序中进行。

是的,size()函数相当于节点上的javagetDegree()方法,是O(1)操作:

Return 进出:

MATCH (u: Node{ name: 'Node 1' }) 
RETURN size((u)-->()) AS degreeOut, 
size((u)<--()) as degreeIn

如果你想通过特定的关系类型,这也是等价的:

MATCH (u: Node{ name: 'Node 1' }) 
RETURN size((u)-[:FOLLOWS]->()) AS followingCount