我有一個圖形數據庫,用於映射建築物和公交車站之間的連接,其中圖形包含其他連接件,如道路和交叉點(在許多節點類型中)。如何在neo4j密碼中通過節點標籤過濾結果?
我想弄清楚的是如何過濾一個路徑,只返回特定的節點類型。我有兩個相關的問題,我目前正在努力。
問題1:如何返回沿路徑的節點標籤?
看起來合乎邏輯的第一步是確定哪些節點沿路徑發生了類型的節點。
我曾嘗試以下:
MATCH p=(a:Building)-[:CONNECTED_TO*..5]-(b:Bus)
WITH nodes(p) AS nodes
RETURN DISTINCT labels(nodes);
不過,我收到標籤()期望和類型節點的數據收集不是一個類型的異常錯誤。我想動態地知道我的路徑上有哪些類型的節點,以便最終可以過濾我的路徑。
問題2:如何返回匹配我在第一步中標識的標籤的路徑中的一部分節點?
說我發現,和(d1:Bus)
(d2:Bus)
之間(a:Building)
,我可以期望找到(:Intersection)
節點和(:Street)
節點。
這是我圖形的簡化模型:
(a:Building)--(:Street)--(:Street)--(b1:Bus)
\(:Street)--(:Intersection)--(:Street)--(b2:Bus)
我寫了一個MATCH
聲明會尋找(:Building)
和(:Bus)
節點之間所有可能的路徑。接下來我需要做些什麼來過濾選擇性地返回街道節點?
MATCH p=(a:Building)-[r:CONNECTED_TO*]-(b:Bus)
// Insert logic to only return (:Street) nodes from p
任何有關這方面的指導將不勝感激!
如果在'NODES(p)WHERE(node:Street))中使用'WITH p,FILTER(節點)作爲街道',您可能會在2中獲得更高效的查詢。這也可以讓你保留單獨的匹配路徑,因爲你當前的查詢只返回街道,但是你失去了路徑信息,或者即使有多條路徑可用。 – InverseFalcon