Löschen Sie alle Knoten und Beziehungen in neo4j 1.8

92

Ich weiß, dass diese Frage von vielen Menschen bereits
für meine Forschung gestellt wird. Hier sind einige Fragen, die zuvor gestellt wurden

  1. Wie lösche ich alle Beziehungen in neo4j graph?
  2. https://groups.google.com/forum/#!topic/neo4j/lgIaESPgUgE

Aber schließlich können
wir unsere Probleme immer noch nicht lösen, wir wollen nur "ALLE" Knoten und "ALLE" Beziehungen löschen

Geben Sie hier die Bildbeschreibung ein

Angenommen, Löschen "ALL" kann sehen, dass noch 0 Knoten, 0 Eigenschaften und 0 Beziehungen übrig sind

Dies ist der Screenshot, den ich gemacht habe, nachdem ich das vom Forum vorgeschlagene Löschen "ALL" ausgeführt habe

Meine Frage ist immer noch dieselbe, wie lösche ich alle Knoten und alle Beziehungen in neo4j

Huei Tan
quelle

Antworten:

246

Ab 2.3.0 und bis 3.3.0

MATCH (n)
DETACH DELETE n

Docs

Vor 2.3.0

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

Docs

Bob B.
quelle
2
In diesem Beispiel in Neo4j-Dokumenten heißt es jedoch: "Diese Abfrage dient nicht zum Löschen großer Datenmengen, ist aber hilfreich, wenn Sie mit kleinen Beispieldatensätzen herumspielen."
Ich frage
2
@ GeorgeBirbilis, um dies über große Datenmengen hinweg zu tun, muss der Vorgang über mehrere Transaktionen aufgeteilt und Wiederholungsmechanismen implementiert werden.
Bob B
1
Ich bin mir nicht sicher, ob ein erneuter Versuch erforderlich ist, aber für eine iterative Vorgehensweise siehe Antwort von Stefan Armbruster unter stackoverflow.com/questions/29711757/… (Ich erwähne ihn auch am Ende meines Blogpost-Links, den ich bei einer separaten Antwort habe.)
George Birbilis
Die 2.3-Antwortabfrage funktioniert bei mir nicht. @ GeorgeBirbilis Vorschlag tut.
Aliteralmind
@aliteralmind nach neo4j.com/docs/2.3.0/query-delete.html zu urteilen, ist wahrscheinlich das Problem, dass nach) eine neue Zeile oder zumindest ein Leerzeichen benötigt wird, da derzeit geschrieben wird ...) DETACH, das aussieht wie ein Tippfehler (und vielleicht auch, um DETACH DELETE in derselben Zeile zu halten, aber nicht sicher, ob dies erforderlich ist). Beachten Sie, dass im Artikel weiterhin steht: "Diese Abfrage dient nicht zum Löschen großer Datenmengen, ist jedoch hilfreich, wenn Sie mit kleinen Beispieldatensätzen herumspielen."
George Birbilis
6

Sie machen es wahrscheinlich richtig, nur das Dashboard zeigt nur die höhere ID und damit die Anzahl der "aktiven" Knoten, Beziehungen, obwohl es keine gibt. es ist nur informativ.

Führen Sie den folgenden Befehl aus, um sicherzustellen, dass Sie ein leeres Diagramm haben:

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

Wenn beide 0 ergeben, war Ihre Löschung erfolgreich.

ulkas
quelle
Ja, es ist wahr, aber das Dashboard zeigt weder eine höhere noch die höchste ID
Huei Tan
Ja, so haben sie es programmiert - denn wenn Sie einen Cluster mit Milliarden von Knoten haben, möchten Sie diese nicht manuell zählen. Aber irgendwo habe ich gesehen, wie jemand tiefer in dieses Thema eingetreten ist und eine Art Javascript-Korrektur vorgenommen hat. Wenn Sie Glück haben, werden Sie vielleicht den Beitrag googeln.
ulkas
5

Für eine große Datenbank sollten Sie entweder die Datenbank von der Festplatte entfernen (nachdem Sie die Engine zuerst gestoppt haben, denke ich) oder in Cypher Folgendes verwenden:

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

Weitere Informationen, die ich aus verschiedenen Antworten zusammengestellt habe, finden Sie unter https://zoomicon.wordpress.com/2015/04/18/howto-delete-all-nodes-and-relationships-from-neo4j-graph-database/

George Birbilis
quelle
2

Neo4j kann keine Knoten löschen, die eine Beziehung haben. Sie müssen die Beziehungen löschen, bevor Sie die Knoten löschen können.

Es ist jedoch eine einfache Möglichkeit, "ALLE" Knoten und "ALLE" Beziehungen mit einem einfachen Chyper zu löschen. Dies ist der Code:

MATCH (n) DETACH DELETE n

-> DETACH DELETE entfernt alle Knoten und Beziehungen nach Match

ardan7779
quelle
0

Wenn der Name des Knotens beispielsweise: abcd lautet, funktioniert die folgende Abfrage:

MATCH (n:abcd)
DETACH DELETE n

Dadurch werden nur der Knoten mit der Bezeichnung "abcd" und alle seine Beziehungen gelöscht.

Shrikant Gourh
quelle
0

Wahrscheinlich möchten Sie Einschränkungen und Indizes löschen

Ruben Rosmarin
quelle
-1

Es wird den Trick machen ..

Match (n)-[r]-()
Delete n,r;
Pavan Kumar Varma
quelle
@ TomRedfern kürzer! XD
Huei Tan
6
Dies löscht keine Knoten ohne Beziehungen, im Gegensatz zu der akzeptierten Antwort
Protongun