Supprimer tous les nœuds et relations dans neo4j 1.8

92

Je sais que cette question est déjà posée par de nombreuses personnes
pour mes recherches, voici quelques questions posées avant

  1. Comment supprimer toutes les relations dans le graphique neo4j?
  2. https://groups.google.com/forum/#!topic/neo4j/lgIaESPgUgE

Mais après tout, nous ne pouvons toujours pas résoudre nos problèmes,
nous voulons simplement supprimer "TOUS" les nœuds et "TOUTES" les relations

entrez la description de l'image ici

Supposons que supprimer "ALL" peut voir qu'il reste 0 nœuds 0 propriétés et 0 relations

Ceci est la capture d'écran que j'ai prise après avoir exécuté la suppression "ALL" suggérée par le forum

Ma question reste la même, comment supprimer tous les nœuds et toutes les relations dans neo4j

Huei Tan
la source

Réponses:

246

À partir de 2.3.0 et jusqu'à 3.3.0

MATCH (n)
DETACH DELETE n

Docs

Pré 2.3.0

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

Docs

Bob B
la source
2
cet exemple dans la documentation Neo4j dit cependant: "Cette requête n'est pas pour supprimer de grandes quantités de données, mais est agréable lorsque vous jouez avec de petits ensembles de données d'exemple.".
Je me
2
@GeorgeBirbilis, afin de faire cela sur de grandes quantités de données, l'opération doit être fractionnée sur plusieurs transactions et des mécanismes de réessai doivent être mis en œuvre.
Bob B
1
Je ne sais pas si une nouvelle tentative est nécessaire, mais pour une manière itérative de le faire, voir la réponse de Stefan Armbruster à stackoverflow.com/questions/29711757/… (je le mentionne également à la fin de mon lien de publication de blog que j'ai à la réponse séparée)
George Birbilis
La requête de réponse 2.3 ne fonctionne pas pour moi. La suggestion de @GeorgeBirbilis le fait.
aliteralmind
@aliteralmind à en juger par neo4j.com/docs/2.3.0/query-delete.html probablement le problème est qu'après) une nouvelle ligne est nécessaire ou au moins un caractère d'espace, car actuellement il écrit ...) DETACH qui ressemble à un faute de frappe (et peut-être aussi pour garder DETACH DELETE sur la même ligne, mais je ne sais pas si cela est nécessaire). Notez que l'article dit toujours "Cette requête ne permet pas de supprimer de grandes quantités de données, mais elle est agréable lorsque vous jouez avec de petits exemples de jeux de données."
George Birbilis
6

vous le faites probablement correctement, seul le tableau de bord montre juste l'ID le plus élevé pris, et donc le nombre de nœuds "actifs", de relations, bien qu'il n'y en ait pas. c'est juste informatif.

pour être sûr d'avoir un graphique vide, exécutez cette commande:

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

si les deux vous donnent 0, votre suppression a réussi.

ulkas
la source
oui, c'est vrai mais le tableau de bord ne montre ni l'ID le plus élevé ni le plus élevé
Huei Tan
oui, c'est ainsi qu'ils l'ont programmé - puisque lorsque vous avez un cluster avec des milliards de nœuds, vous ne voulez pas les compter manuellement. mais quelque part, j'ai vu quelqu'un approfondir cette question et faire une sorte de correctif javascript, peut-être que si vous avez de la chance, vous allez chercher le message sur Google.
ulkas
5

pour une grande base de données, vous devez soit supprimer la base de données du disque (après avoir arrêté le moteur en premier je suppose), soit utiliser dans Cypher quelque chose comme:

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

voir https://zoomicon.wordpress.com/2015/04/18/howto-delete-all-nodes-and-relationships-from-neo4j-graph-database/ pour plus d'informations que j'ai rassemblées à ce sujet à partir de diverses réponses

George Birbilis
la source
2

Neo4j ne peut pas supprimer les nœuds qui ont une relation. Vous devez supprimer les relations avant de pouvoir supprimer les nœuds.

Mais, c'est un moyen simple de supprimer «TOUS» les nœuds et «TOUTES» les relations avec un simple chyper. Voici le code:

MATCH (n) DETACH DELETE n

-> DETACH DELETE supprimera tous les nœuds et relations par Match

ardan7779
la source
0

si le nom du nœud est par exemple: abcd alors la requête ci-dessous fonctionnera:

MATCH (n:abcd)
DETACH DELETE n

Cela supprimera uniquement le nœud avec l'étiquette "abcd" et toutes ses relations.

Shrikant Gourh
la source
0

Vous voudrez probablement supprimer les contraintes et les index

Romarin Ruben
la source
-1

Cela fera l'affaire.

Match (n)-[r]-()
Delete n,r;
Pavan Kumar Varma
la source
@TomRedfern plus court! XD
Huei Tan
6
Cela ne supprime pas les nœuds sans relations, contrairement à la réponse
acceptée