2017-06-28 4 views
0

間違ったデータからデータベースをクリアしようとしています。 私はお互いの間に複数の関係を持っているノードを持っており、それらのノードを削除しようとしています。Neo4jそれらの間に1つ以上の関係があるノードを削除

ことの一例は次のようになります。

(p:Person{id:'1'})-[r:SIBLING_OF]-(k:Person{id:'2'}) 
(p:Person{id:'1'})-[r:PARENT_OF]-(k:Person{id:'2'}) 

私はいくつかのクエリを試してみましたが、それらのどれも右ではなかったです。

これを達成するための最良の方法は誰にも分かりますか?

答えて

1

したがって、関係だけでなく、ノードを削除したいですか?

MATCH (p1:Person)-[:SIBLING_OF]-(p2:Person), 
(p2)-[:PARENT_OF]-(p1) 
DETACH DELETE p1, p2 

おそらく、正しいものを確実に削除するには、DETACH DELETEの代わりにRETURNを実行する必要があります。

+0

このクエリは正常に動作します。一つの欠点は、私は多くの異なる関係を持っているということです。だから、私は多くの異なる組み合わせに対してこのクエリを実行しなければなりません – Porjaz

1

あなたはより一般的なクエリは、それらの間の複数の関係で、ノードのすべてのペアを見つけて削除したい場合は、これを試みることができる:

MATCH (p1:Person)-[r]-(p2:Person) 
WITH p1, p2, count(r) as cnt 
WHERE cnt > 1 and id(p1) < id(p2) 
DETACH DELETE p1, p2 
関連する問題