0
想象一下,我有下面的圖:Neo4j的 - 使用Cypher支架返回現有路徑的列表
忽略的關係的曲線圖的3-> 2和4-> 3,以保持它樹狀結構。
說明:在我的情況下,這種類型的關係(4-> 3,3-> 4)將不存在。
是否可以使用Cypher返回圖表中所有現有路徑的「列表」?
示例上方的圖表:
結果:1-2,1-3,1-3-4
優選地,它應該是深度優先。
想象一下,我有下面的圖:Neo4j的 - 使用Cypher支架返回現有路徑的列表
忽略的關係的曲線圖的3-> 2和4-> 3,以保持它樹狀結構。
說明:在我的情況下,這種類型的關係(4-> 3,3-> 4)將不存在。
是否可以使用Cypher返回圖表中所有現有路徑的「列表」?
示例上方的圖表:
結果:1-2,1-3,1-3-4
優選地,它應該是深度優先。
這不是Cypher的主要用例,所以它不會表現得很好,但它是可能的。
實施例的數據集:
CREATE
(n1:Node {name: 'n1'}),
(n2:Node {name: 'n2'}),
(n3:Node {name: 'n3'}),
(n4:Node {name: 'n4'}),
(n1)-[:REL]->(n2),
(n1)-[:REL]->(n3),
(n3)-[:REL]->(n4)
查詢,使用path variable:
MATCH p=(a)-[*]->(b) RETURN p
結果:
╒════════════════════════════════════════════╕
│p │
╞════════════════════════════════════════════╡
│[{name: n1}, {}, {name: n2}] │
├────────────────────────────────────────────┤
│[{name: n1}, {}, {name: n3}] │
├────────────────────────────────────────────┤
│[{name: n3}, {}, {name: n4}] │
├────────────────────────────────────────────┤
│[{name: n1}, {}, {name: n3}, {}, {name: n4}]│
└────────────────────────────────────────────┘
作爲Cypher支架是說明性語言,有至沒有選項執行廣度/深度優先遍歷。但是,爲了這個目的Neo4j提供了一個traversal framework,你可能會覺得有用。
謝謝,這工作完美。如果你不介意我問(我注意到你是圖形處理方面的博士生),我是否能夠顯示哪些圖形有一些圖案?我的意思是,假設我有其他類似於我所展示的圖形,但有一些細微的差異,我想查找具有給定圖案的每個圖(假設它們都有一個像1一樣的根節點)。例如。如果我的數據庫只有上面的圖表,並且我會搜索所有具有模式3 - > 4的圖表,則返回值爲1.預先感謝 –
我不確定我是否完全理解該問題,但可以輕鬆搜索具體模式,例如'MATCH({name:'n3'}) - [] - >({name:'n4'})RETURN *'並檢查是否有結果。 –