我有兩個類型爲User的節點鏈接到一個或多個Tweet類型的公共節點。圖像中的一個例子:複製另一個節點的關係
我想刪除重複的用戶,並將它們合併成一個單一節點。保留來自兩個用戶的所有關係。
這是我用它來查找需要合併的節點條件:
MATCH (x:User)-[k:POSTS]->(:Tweet)<-[:POSTS]-(y:User)
用下面的查詢:
MATCH (x:User)-[k:POSTS]->(:Tweet)<-[:POSTS]-(y:User)
DELETE k
WITH x, y
MATCH (x)-[r:POSTS]->(z:Tweet)
MERGE (y)-[:POSTS]->(z)
DELETE r
其分離USER_B但不鳴叫鏈接用戶a。
請注意,我也嘗試過apoc.refactor.mergeNodes,但它會給出錯誤。
我怎樣才能合併這兩個節點保存他們的關聯?
UPDATE:
MATCH (z:User)
WHERE (z:User)-[:POSTS]->(:Tweet)<-[:POSTS]-(:User)
WITH COLLECT(z) AS zs
CALL apoc.refactor.mergeNodes(zs) YIELD node
RETURN node;
與此查詢我獲得重複的關係,是有辦法合併嗎?
更新2:
我試圖用前面的查詢我的數據庫的一個較大的樣本,它提供了錯誤。
更多的澄清。 1.您的問題表明您有興趣「保留來自兩個用戶的所有關係」,但您的其餘問題表明您想刪除「重複」關係。你究竟想要做什麼? 2.如果你真的想將「重複」關係合併成一個,你可能想合併所有的屬性,如果有的話。這些關係是否有價值?如果是這樣,並且要合併的關係對於同一個屬性可以具有不同的值,那麼您希望保留在合併關係中的哪些值? – cybersam