2016-09-19 38 views
0

所以,我在圖中有國家,州和城鎮。有國家和城市之間有兩個可能的關係:如何列出我的兩個端點節點之間的可選中介節點?

(c:Country)<-[:GEO_IN]-(s:State)<-[:GEO_IN]-(t:Town) 

(c:Country)<-[:GEO_IN]-(t:Town) 

我試圖以生成列出所有的國家,並與城鎮的計數狀態的表。我覺得很有道理使用通配符匹配的關係...

Match(t:Town)-[:GEO_IN*]->(c:Country) 

但現在我不知道如何讓國家名單的是,名單中。我使用這個非常簡單的例子來測試和開發更復雜的理解。所以我知道我可以做幾個可選的匹配,然後列出它們,但是如果我在t和c之間有n個可能的節點會怎麼樣?

該解決方案非常值得讚賞,但正如您可能猜到的,我真正想要的是更深入地瞭解如何考慮密碼,以及何時使用哪些工具。

在此先感謝

+1

在你的數據庫中,所有'State'節點都至少有一個相關的'Town'? – cybersam

回答

1

當你有一個可變長度的使用路徑別名,他們要容易得多。

MATCH path = (:Town) - [:GEO_IN*1..2] -> (:Country) 
WITH NODES(path)[0] AS town, TAIL(NODES(path)) AS t_and_c 
UNWIND t_and_c AS region 
RETURN DISTINCT region, COUNT(DISTINCT town) 

退房的refcard的深處,有很多不僅僅是匹配的節點更多的Cypher支架。

相關問題