Tweetタイプの1つ以上の共通ノードにリンクされた2つのタイプのノードがあります。画像の例:別のノードからの関係のコピー
私は、重複ユーザーを削除し、単一のノードにマージしたいと思います。両方のユーザーからのすべての関係を保存します。次のクエリでは
MATCH (x:User)-[k:POSTS]->(:Tweet)<-[:POSTS]-(y:User)
:
この
は私がマージされる必要があるノードを検索するために使用する条件であるUser_Bへの切り離しこれらにつぶやきをリンクしない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
ユーザーa。
私もapoc.refactor.mergeNodesを試しましたが、エラーが発生します。
これら2つのノードをマージして関連性を維持するにはどうすればよいですか?
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;
、マージする方法はありますか?
UPDATE 2:
私は私のデータベースのより大きなサンプルの前のクエリを使用しようとしたが、それはエラーになります。
より明確化が必要とされています。 1.あなたの質問は、「両方のユーザーからのすべての関係を維持する」ことに興味があると述べましたが、残りの質問は「重複する」関係を削除することを示しています。あなたは実際に何をしたいですか? 2.実際に "複製"関係を1つにマージする場合は、おそらくすべてのプロパティをマージしたいと思うでしょう。関係には値がありますか?その場合、マージされるリレーションシップが同じプロパティに対して異なる値を持つことができる場合、マージされたリレーションシップに保持する値はどれですか? – cybersam