我们可以在 neo4j 中为节点在 O(1) 时间内获得节点的进/出度吗?



我想在neo4j中获取给定节点的输入/退出度。一种方法是使用以下查询:

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

这需要查找u的关系。

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

我们是否必须自己维护它或 neo4j 管理它,以便我们只需找到节点即可获得学位。 我想通过密码查询或 python 驱动程序来做到这一点。

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

返回传入和传出:

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

最新更新