neo4j 1.8のすべてのノードと関係を削除する


92

この質問はすでに
私の研究のために多くの人々から尋ねられていることを知っています、これは前に尋ねられたいくつかの質問です

  1. neo4jグラフのすべての関係を削除する方法
  2. https://groups.google.com/forum/#!topic/neo4j/lgIaESPgUgE

しかし結局のところ、それでも問題を解決できないため、
「ALL」ノードと「ALL」関係を削除したいだけです。

ここに画像の説明を入力してください

「ALL」を削除すると、ノードが0、プロパティが0、関係0残っていることがわかります。

これは、フォーラムから提案された「すべて」の削除を実行した後に取ったスクリーンショットです。

私の質問はまだ同じです、neo4jのすべてのノードとすべての関係を削除するにはどうすればよいですか

回答:


246

2.3.0以降3.3.0まで

MATCH (n)
DETACH DELETE n

文書

2.3.0より前

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

文書


2
ただし、Neo4jドキュメントのこのサンプルでは、​​「このクエリは大量のデータを削除するためのものではありませんが、小さなサンプルデータセットをいじる場合に適しています。」と述べています。MATCH()-[r]-()DELETE rを実行してからMATCH(n)DELETE nを実行するほうがよいかどうか疑問に思う
ジョージビルビリス

2
@GeorgeBirbilisでは、大量のデータに対してこれを行うには、操作を複数のトランザクションに分割し、再試行メカニズムを実装する必要があります。
ボブB

1
再試行が必要かどうかはわかりませんが、繰り返し行う方法については、stackoverflow.com / questions / 29711757 /… でStefan Armbrusterの返信を参照してください(別の回答で持っているブログ投稿のリンクの最後にも記載しています)
ジョージビルビリス

2.3 answer-queryが機能しません。@GeorgeBirbilisの提案にはあります。
aliteralmind '20年

@aliteralmindは、neo4j.com / docs / 2.3.0 / query-delete.htmlから判断すると、おそらく)の後に改行が必要であるか、少なくとも空白文字が必要です。タイプミス(DETACH DELETEを同じ行に保持することも可能ですが、それが必要かどうかは不明です)。記事にはまだ「このクエリは大量のデータを削除するためのものではありませんが、小さなサンプルデータセットをいじる場合に適しています」とあります。
George Birbilis、2015年

6

あなたはおそらくそれを正しくやっています、ダッシュボードだけが取ったより高いIDだけを表示し、したがって「アクティブ」ノードの数、関係は表示されませんが、何もありません。それは単なる参考情報です。

空のグラフがあることを確認するには、次のコマンドを実行します。

START n=node(*) return count(n);
START r=rel(*) return count(r);

両方とも0の場合、削除は成功しました。


ええ、それは本当ですが、ダッシュボードに高いIDも最高のIDも表示されません
Huei Tan

はい、それは彼らがそれをプログラムした方法です-ノードのビリオンを持つクラスターがあるとき、あなたはそれらを手動で数えたくないので。しかし、どこかで誰かがこれをより深く掘り下げて何らかのJavaScript修正を行うのを見たことがあります。もし運が良ければ、投稿をググるでしょう。
ulkas 2013年

5

大きなデータベースの場合は、データベースをディスクから削除するか(最初にエンジンを停止した後で)、Cypherで次のように使用する必要があります。

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
WITH n,r LIMIT 50000
DELETE n,r
RETURN count(n) as deletedNodesCount

さまざまな回答からこれについて収集した詳細については、https://zoomicon.wordpress.com/2015/04/18/howto-delete-all-nodes-and-relationships-from-neo4j-graph-database/を参照してください


2

Neo4jは、関係のあるノードを削除できません。ノードを削除する前に、関係を削除する必要があります。

しかし、それは単純なchyperで「ALL」ノードと「ALL」関係を削除する簡単な方法です。これはコードです:

MATCH(n)DETACH DELETE n

-> DETACH DELETEは、一致によってすべてのノードと関係を削除します


0

ノードの名前がたとえばabcdの場合、以下のクエリが機能します。

MATCH (n:abcd)
DETACH DELETE n

これにより、ラベル「abcd」のノードとそのすべての関係シップのみが削除されます。



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.