2015-04-06 34 views
3
(:Dot)-[:CONTAINS]->(:Dot) 

不是每個點都有一個容器,也沒有循環。 Atm a點只能由另一個點包含。所以,我們基本上都是在談論樹木Cypher查詢返回分層嵌套數據

現在我想用的Neo4j檢索數據和hierarchally返回(通過容器):

[ 
    {"id": 1, "containees": [ 
     {"id": 3}, 
     {"id": 4, "containees": [ 
      {"id": 6}, 
     ]}, 
    ]}, 
    {"id": 2, "containees": [ 
     {"id": 5} 
    ]} 
] 

查詢不應該使用固定的深度。

Atm我只有這個,我真的不知道我的選項是關於迭代路徑。

MATCH (d:Dot) 
OPTIONAL MATCH p = d-[:CONTAINS*]->(d2:Dot) 
RETURN d.id 

回答

2

我很確定這是不可能與Cypher(有人請糾正我,如果我錯了)。 Cypher擅長將子圖匹配並將它們轉換爲表格,但它不會執行遞歸式查詢。

對於這樣的事情,我認爲你需要直接通過Java APIs。無論是通過與您的語言選擇的Java接口,或通過創建一個unmanaged extension讓Neo4j以JSON(或任何您想要的格式)返回給您的數據