使用自己的存储过程计算Neo4j中最大程度的节点

时间:2018-04-25 16:30:28

标签: neo4j cypher

为了深入练习和深入了解Neo4j内部,我决定实现简单的存储过程以找到最大程度的节点。

我知道它已实施:

call apoc.stats.degrees(null)

奇怪的是,我收到了一个错误:

  

没有注册名称为apoc.stats.degrees的程序   对于此数据库实例。请确保您已拼写该程序   正确命名并正确部署该过程。

版本3.2.3

但是,我将自己实施它,并了解我错在哪里: 看看这段代码:

@Procedure(name = "com.maxdemarzi.get_max_degree", mode = Mode.DEFAULT)
@Description("CALL com.maxdemarzi.get_max_degree()")
public Stream<LongResult> GetMaxDegree() {

ResourceIterable<Node> allNodes = db.getAllNodes();
int degree = allNodes.stream().max((Node n1, Node n2)-> n1.getDegree() >= n2.getDegree() ? 0 : 1).get().getDegree();

return Stream.of(new LongResult(Long.valueOf(degree)));
}

它始终返回0,尽管我的图表中存在度数为5的节点。

欢迎使用每个提示,以便更好地理解我的代码不正常的原因!

1 个答案:

答案 0 :(得分:0)

请检查Neo4j插件中安装的apoc-3.2.3.x.jar