2014-10-09 56 views
1

我在這裏看到:How can I return all properties for a node using Cypher?有人已經問過這個問題,但1年前。如何使用Cypher返回節點的所有屬性及其名稱和值使用Cypher

所以我現在需要問一下:今天有沒有辦法使用cypher返回節點的所有屬性?我需要做一個翻譯系統,以前的開發人員已經將它創建爲每種語言1個節點,幷包含所有屬性,並使用他們的名稱以所需的語言。我需要爲Java應用程序獲取它。

例子:

node FR contains: "Salut_01" : "Bonjour" 
node UK contains: "Salut_01" : "Hello" 

等等

回答

0

這是怎麼了,我終於做到:

private IndexedContainer getTradParameters(int id){ 
     IndexedContainer container = new IndexedContainer(); 
     container.addContainerProperty("name", String.class, null); 
     try { 
      Document doc = Jsoup.connect("http://10.0.0.1:7474/db/data/node/"+id+"/").get(); 
      Elements properties = doc.select("th"); 
      for(int index = 0; index < properties.size(); index++){ 
       String parameter = properties.get(index).text(); 
       Item item = container.addItem(index); 
       item.getItemProperty("name").setValue(parameter); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return container; 
    } 

其中ID參數由該返回:

match (t:Translation) return id(t) 

我打電話getTradParameters()符合我的要求的每一個迭代,然後我有一個帶有我節點所有參數名稱的容器。

最後一部分是調用這個函數:

private String getTradRequest(String pays){ 
     String request = "match (n:Translation{trad_country:\""+pays+"\"}) return id(n) as id"; 
     QueryResult <Map<String,Object>>result = engine.query(request, Collections.EMPTY_MAP); 
     Iterator<Map<String, Object>> iterator=result.iterator(); 
     Map<String,Object> row = iterator.next(); 
     int id = Integer.valueOf(row.get("id").toString()); 
     try { 
      Document doc = Jsoup.connect("http://10.0.0.1:7474/db/data/node/"+id+"/").get(); 
      Elements properties = doc.select("th"); 
      for(int index = 0; index < properties.size(); index++){ 
       String parameter = properties.get(index).text(); 
       request = request + ",n."+parameter; 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return request; 
    } 

要創建我的大Cypher支架的要求得到所有我需要我的某個節點的屬性,然後我只需要得到答案,並把它們存儲在一個容器,使用vaadin將其顯示在表中。

0

如果直接從暗號通過HTTP端點返回節點將返回所有財產名和屬性值的地圖。

MATCH (n) return n 

在Java中,你只需要通過n.getPropertyKeys()

對於你的正則表達式問題,你應該把你的問題分成兩部分。

+0

你的答案似乎很好,但我不知道如何使用http端點,我對這個問題有你的答案相同的問題:http://stackoverflow.com/questions/26175969/neo4j-partial- dump-with-cypher-in-java 我在java中找到了一個解決方案,會在我完成所有代碼時發佈它 – Supamiu 2014-10-09 12:30:07

相關問題