簡體   English   中英

我將如何查詢這兩個節點之間的關系?

[英]How would I query for a relationship between these two nodes?

如果我有一個節點(p)和(e)像這樣的圖:

(p:Person)-[r:WorksFor]->(e:Employer)

我有以下數據:

(Person {name: Andrew})-[r:WorksFor]->(Employer {name: Google})
(Person {name: James})-[r:WorksFor]->(Employer {name: Google})
(Person {name: James})-[r:WorksFor]->(Employer {name: Apple})
(Person {name: Evan})-[r:WorksFor]->(Employer {name: Apple})

如何通過每種關系在(Person {name:Evan})之間進行查詢,然后到達(Person {name:Andrew})之間,從而返回每個雇主和個人以及中間有任意數量的雇主和個人?

理想情況下,上面的代碼將返回如下所示的鏈:

(Andrew)->(Google)->(James)->(Apple)->(Evan)

謝謝您的幫助。

(編輯)附錄:

以下內容似乎可行,但僅當玩家分開兩個角度時,有沒有辦法使長度完全可變?

MATCH 
(p:Person {name: "Andrew"})-->(e:Employer)<--(p3:Person)-->(e2:Employer)<--(p2:Person {name: "Evan"}) 
RETURN *

您需要可變長度的模式匹配

根據您的圖形,您可以定義要遍歷或忽略類型的關系。 我們可以省略方向來指定我們不關心關系的遍歷方向:

MATCH path = (p:Person {name: "Andrew"})-[:WorksFor*]-(p2:Person {name: "Evan"}) 
RETURN path

如果要在路徑中包含節點,則可以返回nodes(path)以獲取該列表。

如果只需要這兩者之間的最短路徑,則可以將兩者匹配,然后使用shortestPath函數進行匹配:

MATCH (p:Person {name: "Andrew"}), (p2:Person {name: "Evan"}) 
MATCH path = shortestPath((p)-[:WorksFor*]-(p2))
RETURN path

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM