我在圖中有兩個單獨的節點,並且在某一點上,我會得到一個信號,表明這兩個節點實際上應該是一個節點。所以我必須合併這兩個包括他們的屬性(沒有重疊),我也應該保持關係。如何將一個節點的屬性和關係移動到另一個節點?
示例圖:(d)->(a {id:1}), (b)->(c {name:"Sam"})
期望的結果:(d)->(a {id:1, name:"Sam"}), (b)->(a {id:1, name:"Sam"})
標籤a
不必真的是這樣的結果 - 重點是,我們將只有一個節點的代表原來的兩個。
以下合併屬性正常。
MATCH (a:Entity {id:"1"}), (c:Entity {name:"Sam"})
SET a += c
但我似乎無法找到移動/複製關係的方法。
的規格:
- 這兩個節點將不具有相同的屬性
- 節點
a
可以有傳入和傳出的關係 - 節點
c
可以有傳入的關係,非傳出
有什麼想法?
更新:
以下作品,假設類型和來節點c
特性預先已知的。我可以改善這一點,使其更具活力嗎?
MATCH (a:Entity {id1:"1"}), (c:Entity {id2:"2"})
SET a += c
WITH a, c
MATCH (c)<-[r]-(b)
WITH a, c, r, b
MERGE (b)-[:REL_NAME {prop1:r.prop1, prop2:r.prop2}]->(a)
WITH c
DETACH DELETE c
更新2: 上面有時會拋出unable to load relationship with id
錯誤,我不知道爲什麼,但似乎/它關係到閱讀的同時書寫。
更新3: 這是錯誤周圍的工作:
MATCH (a:Entity {id1:"1"}), (c:Entity {id2:"2"})
SET a += c
WITH a, c
MATCH (c)<-[r]-(b)
WITH a, c, r, b
MERGE (b)-[r2:REL_NAME]->(a)
SET r2 += r
WITH r, c
DELETE r, c
這可能會實現合併(二) - [R2:REL_NAME] - >(a)設置r2 = r – Evgen
乾杯@Evgen這樣好多了。 – Motasim
更新3中查詢中的a + = c和r2 + = r是什麼意思? – Aqqqq