2014-09-02 50 views
0

我有一個圖如下。紫色節點(11376 & 11394)是我的根節點,即我的圖形從那裏開始。Cypher查詢匹配圖的一個特定路徑

現在我想編寫一個密碼查詢,這樣我就可以獲得節點11376的完整路徑,即從開始節點到結束節點(從紫色到黃色)。另外當我說節點11376我不應該得到其他節點11394.我該怎麼做。

我想下面的查詢,但沒有得到期望的輸出:

match (hh{id:'11376'})-[*0..2]-(n) return n; 

這是給其他節點以及即11394

下面是Neo4j的grapg:

My graph

所以,如果我編寫節點11376的密碼匹配查詢,我應該得到完整的下面的路徑,如下所示。 enter image description here

我該怎麼做?

感謝

回答

1

通過使用黃色節點的標籤類型,編寫查詢爲:

match path = (hh{id:'11376'})-[*0..3]-(n:YELLOW_NODE_LABEL_TYPE_HERE) 
return path; 

這將返回所有從(node {id:'11376'})經過3跳或更少的路徑到任何具有已分配給黃色節點的標籤類型的節點。通過第二個紫色節點的路徑將不會包含在您的結果中,因爲通過兩個紫色節點到達另一個黃色節點需要超過三跳。

+0

@凱爾文,非常感謝。你的建議對我非常有幫助,能夠看到理想的結果。 – shree11 2014-09-03 11:40:17

0

嗯,你知道會有至少3周跳,所以你可以在查詢指定:無需爲您無法限制黃節點標籤

MATCH p=(hh {id:11376})-[r*3]-(n)) RETURN p 

順便說一句該路徑必須以黃色節點最終使之與上述查詢你可能有一些額外的路徑

+0

我對不同的層次結構級別節點有不同的標籤名稱。另外,我試着用你提出的查詢,即匹配m =(hh {id:11376}) - [r * 3] - (prop)返回m,但它也給出了其他根節點。但是,如果我在下面的最後一個節點中指定了特定的屬性名稱,它只會給出排除其他值的路徑。查詢是'match p =(hh {id:11376}) - () - () - (prop {pname:11392})return p;'。但我想要所有節點和關係的根節點11376. – shree11 2014-09-02 11:53:05

相關問題