使用图表中的属性进行计算 - Neo4j Embedded Java

时间:2016-06-21 18:27:08

标签: java neo4j

我在Neo4j中有一个图表,该图表中的每个关系都有一个名为InverseRandomNumber的属性。我想遍历所有节点,并且每个节点都从连接到节点的所有关系中获取这些属性,对这些属性值求和并将sum保存为节点中的属性。 InverseRandomNumber是一个整数或双精度,我使用Java中嵌入的Neo4j 2.3.3。您可以在下面找到我的代码。

Label myLabel = DynamicLabel.label("Data");
final RelationshipType type2 = DynamicRelationshipType.withName("Rel"); 

ResourceIterator<Node> users = graphDb.findNodes( myLabel, "Group", "Random" );

Node firstUserNode;
while ( users.hasNext() )
{
    firstUserNode = users.next();

    ArrayList<Object> RelList = new ArrayList<Object>();
    if(firstUserNode.hasRelationship(Direction.BOTH)){
        for (Relationship relationship : firstUserNode.getRelationships(Direction.BOTH)){
            RelList.add(relationship.getProperty("InverseRandomNumber"));
        }
    }

    Double sum = 0.0;
    Double dd = 0.0;

    for(int j=0; j < RelList.size(); j++){
        dd = toDouble(RelList.get(j));
        sum+=dd;
    }

    firstUserNode.setProperty("SumInverse",sum);        
}
users.close();

在上面的代码中,我使用toDouble方法将我得到的值变为double。这是处理数值属性的正确方法还是更有效和准确的另一种方法?

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您不想使用BigDecima:

BigDecimal.valueOf((Double)n.getProperty("InverseRandomNumber"));