好了,這裏就是你的暗號所描述的情況:
CREATE (se:SoftwareEngineer {name: "Bob"})-[:LEAD_BY]->(tl:TeamLeader {name: "Mark"});
MATCH (tl:TeamLeader {name: "Mark"})
CREATE (tl)-[:MANAGED_BY]->(pm:ProjectManager {name: "Gil"})
鮑勃的軟件工程師是由團隊負責人馬克領先。 Mark由項目經理「Gil」管理。
從這裏
現在,有解釋你的問題的幾種方法:
我們如何找出誰是項目經理?
您指定如果存在LEAD_BY
關係,然後是MANAGED_BY
關係,則該人員是PM。所以,不,你不需要創建SoftwareEngineer
直接ProjectManager
一個新的關係,而不是你只需要遍歷兩個關係,就像這樣:
MATCH (p)-[:LEAD_BY]->(q)-[:MANAGED_BY]->(pm)
RETURN pm;
如果你能更具體的(就像使用我的標籤那麼你也可以這樣做:
MATCH (se:SoftwareEngineer)-[:LEAD_BY]->(tl:TeamLead)-[:MANAGED_BY]->(pm:ProjectManager)
RETURN se, tl, pm;
這將給你一個所有3級管理關係的完整列表。
通常,只要您可以指定它,就可以使用這些密碼查詢在模式中深度很多的層次進行導航。
你想連接的節點是什麼? – subvertallchris 2014-10-22 07:23:09
我不想要節點之間的關係。如果我是軟件工程師,我想要虛擬關係,比如誰是我的項目經理。爲此,我想前往LEADESBY去ManagedBY,然後我得到軟件工程師的PM,而不直接在軟件工程師和PM之間建立關係。 – dotnetstep 2014-10-22 07:31:28