对于neo4j中的节点,我们能否在O(1)时间内进入/退出节点的度数?

时间:2017-07-22 13:23:14

标签: neo4j graph-databases

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

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

这需要查找u的关系。

其他方法是在插入节点时不断更新节点的度数,然后我们只需找到节点即可获得度数。

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

1 个答案:

答案 0 :(得分:3)

是的,size()函数相当于节点上的java getDegree()方法,并且是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