2013-10-29 34 views
0

根據Neo4j documentation「參考節點概念已過時 - 索引是獲取圖中入口點的標準方法」。neo4j參考節點已過時,但仍然從getAllNodes返回

但是,如果我使用GlobalGraphOperations.getAllNodes()我仍然返回一個ID爲0的節點,我沒有創建它,它具有參考節點的所有外觀。

我想實現的方法getNode(字符串UUID)

public Node getNode(String uuid) 
    { 
     GlobalGraphOperations globalGraphOperations = GlobalGraphOperations.at(graphDb); 
     for(Node tmpNode : globalGraphOperations.getAllNodes()) 
     { 
      if(tmpNode.equals(graphDb.getReferenceNode())) 
      { continue;} 

      String tmpNodeUuid = (String)tmpNode.getProperty("uuid"); 
      if (tmpNodeUuid.equals(uuid)) 
      { 
       return tmpNode; 
      } 
     } 
     return null; 
    } 

爲什麼getAllNodes返回參考節點? 如何在不使用棄用函數getReferenceNode()的情況下以編程方式實現getNode()?

回答

0

參考節點的概念確實被棄用,並且將在Neo4j版本2.0中被刪除。在1.x中,概念依然存在,並且在數據庫被初始創建時創建參考節點。如果你不需要它,你可以刪除參考節點。隨着遍歷整個圖形,圖形增長,您正在編寫的方法會變慢。您應該爲UUID屬性創建一個索引,並使用該索引查找圖中的節點,速度要快得多。以及成爲圖中獲取入口點的標準方法:-)