我有2個屬性名稱爲A和B的節點。每個節點都有多個手機聯繫人保存。Neo4j如何建立關係
- 用戶A在他接觸用戶C
用戶B有用戶C在他接觸
如何用戶C有關係,他KNOWS
用戶連接A和B?
我必須合併用戶C的第一件事,而不是建立一個名爲KNOWS
的關係。
我有2個屬性名稱爲A和B的節點。每個節點都有多個手機聯繫人保存。Neo4j如何建立關係
用戶B有用戶C在他接觸
如何用戶C有關係,他KNOWS
用戶連接A和B?
我必須合併用戶C的第一件事,而不是建立一個名爲KNOWS
的關係。
如何將用戶C與他知道用戶A和B的關係連接起來?
簡單地做:
MATCH(a {name:"A"}) // Match nodes with property name = "A" and store it in a variable
MATCH(b {name:"B"}) // Match nodes with property name = "B" and store it in b variable
MERGE (c {name:"C"}) // merge c (will be created if a node with name = "C does not exists yet")
CREATE UNIQUE (c)-[:KNOWS]->(a) // Will create :KNOWS relationship from c to a if it not exists
CREATE UNIQUE (c)-[:KNOWS]->(b) // Will create :KNOWS relationship from c to b if it not exists
您還可以使用MERGE創建C和不曉關係中的一個步驟:
MATCH (a:user {name:'A'}) MERGE (c:user {name:'C'})-[:KNOWS]->(a);
在這裏,你正在尋找一個:用戶具有屬性的節點名稱 ='A'。如果找到了,結果會傳遞給MERGE子句。您正在給MERGE一個完整的路徑; MERGE將創建不存在的部分路徑。在這種情況下,它將創建一個類型爲的節點:用戶並給它一個名稱屬性設置爲'C';它也會創建一個:從C到A的KNOWS關係。MERGE將使用已給出的現有節點a。通過這種方式,MERGE與CREATE不同,因爲CREATE會嘗試創建所有內容,包括新節點a。
如果您還有其他的屬性來設置你的節點C,你可以使用上創建子條款,同時設置這些屬性:
MATCH (a:user {name:'A'}) MERGE (c:user {name:'C'})-[:KNOWS]->(a) ON CREATE SET c={name:'C', phone:'+1 234 5678'};