2016-06-21 55 views
0

我在Neo4j中有一個圖並且此圖中的每個關係都有一個名爲InverseRandomNumber的屬性。我想遍歷所有的節點,並且每個節點都從連接到節點的所有關係中獲取這些屬性,對這些屬性值求和並將總和保存爲節點中的屬性。 InverseRandomNumber是一個整數或雙精度值,我使用嵌入在Java中的Neo4j 2.3.3。下面你可以找到我的代碼。使用從圖中取得的屬性進行計算 - Neo4j嵌入式Java

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方法把我進入雙值。這是處理數字屬性的正確方法還是有另一種方法更有效和準確?

任何想法?

回答

0

如果你不希望使用BigDecima:

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

屬性的值,如我前面提到的,可以是整數或雙所以當我用你的方法,我得到一個錯誤整數不能轉換爲double。 – lostromos