2015-01-16 59 views
0

鑑於以下數據集的集數:查詢節點的父母雙方和孩子的Neo4j

(a)-[:PARENT]->(b) 
(b)-[:PARENT]->(c) 
(c)-[:PARENT]->(d) 
(d)-[:PARENT]->(e) 
(e)-[:PARENT]->(f) 
(g)-[:PARENT]->(h) 
(h)-[:PARENT]->(i) 

我希望能夠從「d遍歷雙方父母的圖形以及兒童「節點,並限制在結果集中完成的跳數(即,我只想回去並轉發兩跳以獲得從」B「到」H「節點結束但忽略所有其他代的數據)。

+0

結果應該不是「b」到「f」? – cybersam

+0

我正在尋找層次結構,以便可以向前和向後生成特定數量的世代樹。例如,我想知道我從哪裏開始(D),它是父母,祖父母,孩子和孫子們以及走向他們的途徑。 – OpenDataAlex

回答

1

這個查詢是做你想做的嗎?它假定所有節點都有一個帶有字符串值的id屬性。

MATCH p=()-[:PARENT*..2]->(x)-[:PARENT*..2]->() 
WHERE x.id = 'd' 
WITH DISTINCT NODES(p) AS np 
UNWIND np AS n 
RETURN COLLECT(DISTINCT n.id) 

根據您的數據,結果將爲["b","c","d","e","f"]

+0

我認爲它很接近 - 我對密碼很陌生,因此不得不擺脫傳統的查詢一直很有趣。我會測試一下:) – OpenDataAlex

+0

它接近我正在尋找的東西。我最終將分層結構分成兩部分,以便我可以適當地設置數據。 – OpenDataAlex