2017-09-18 17 views
2

我有這種類型的圖表:如何查詢包含某個節點的所有鏈?

(a)->[r1]->(b)-[r1]->(c)->[r1]->(d) ...。還有每個節點可以有另外的一個或幾個關係r2,例如:

(b)->[r2]->(G) 

(b)->[r2]->(K)等,或:

(c)->[r2]->(G) 

(c)->[r2]->(K)

如果我用這樣的查詢:

MATCH (n1)-[r]->(n2)-[r1]->(n3)-[r2]->(n4)-[r3]->(n5)-[r4]->(n6) 
WHERE n1.property = "`DEF9747D6`" 
RETURN r,r1,r2,r3,r4,n1,n2,n3,n4,n5,n6 LIMIT 10 

它只返回指定的節點N1到N6的關係,但我沒有頭鏈多少節點包含之前知道的問題。

所以我需要一個查詢,它可能會返回所有的鏈和關係,即使我在中間指定了一個屬性節點。例如:

我指定了一些(c.Property),並且查詢必須返回所有鍊形式(a)和結束以及所有關係r1r2

你能幫我解決這個問題嗎?

回答

0

下面的查詢應該工作:

MATCH p = (n1)-[:n1|:n2*]->() 
WHERE n1.property = "`DEF9747D6`" 
RETURN relationships(p), nodes(p) 
LIMIT 10 

此查詢使用variable-length pattern matchingMATCH從n1.property節點=「DEF9747D6」跨:n1型和:n2的關係橫移開始的所有模式。函數relationships()nodes()用於返回來自每個路徑的所有關係和節點。

提示:使用關係類型時,請記得在類型名稱前添加:。即:使用:n1而不是n1

+0

非常好,親愛的布魯諾佩雷斯!這種搜索對我來說很好。非常感謝你! – Andrew

+0

嗨@Andrew歡迎您!如果此答案已解決您的問題,請點擊複選標記,考慮[接受](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。這向更廣泛的社區表明,您已經找到了解決方案,併爲答覆者和您自己提供了一些聲譽。沒有義務這樣做。 –

+0

稍加修改該工作對我來說: MATCH P =() - [*] - >(N1) - [*] - >() WHERE n1.property = 「'DEF9747D6'」 RETURN關係(p)的,節點(p) 極限100 – Andrew

相關問題