Eliminar todos los nodos y relaciones en neo4j 1.8

92

Sé que muchas personas ya hacen esta pregunta
para mi investigación, aquí hay algunas preguntas que se hicieron antes

  1. ¿Cómo eliminar todas las relaciones en el gráfico neo4j?
  2. https://groups.google.com/forum/#!topic/neo4j/lgIaESPgUgE

Pero después de todo, todavía no podemos resolver nuestros problemas,
solo queremos eliminar "TODOS" los nodos y "TODAS" las relaciones

ingrese la descripción de la imagen aquí

Supongamos que eliminar "TODOS" puede ver que quedan 0 nodos 0 propiedades y 0 relaciones

Esta es la captura de pantalla que tomé después de ejecutar la eliminación de "TODOS" sugerida por el foro

Mi pregunta sigue siendo la misma, ¿cómo eliminar todos los nodos y todas las relaciones en neo4j?

Huei Tan
fuente

Respuestas:

246

A partir de 2.3.0 y hasta 3.3.0

MATCH (n)
DETACH DELETE n

Docs

Pre 2.3.0

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

Docs

Bob B
fuente
2
Sin embargo, esta muestra en los documentos de Neo4j dice: "Esta consulta no es para eliminar grandes cantidades de datos, pero es buena cuando se juega con pequeños conjuntos de datos de ejemplo". Me pregunto si es mejor hacer MATCH () - [r] - () DELETE ry luego hacer MATCH (n) DELETE n
George Birbilis
2
@GeorgeBirbilis, para hacer esto con grandes cantidades de datos, la operación debe dividirse en múltiples transacciones y deben implementarse mecanismos de reintento.
Bob B
1
No estoy seguro de si es necesario volver a intentarlo, pero para una forma iterativa de hacerlo, consulte la respuesta de Stefan Armbruster en stackoverflow.com/questions/29711757/… (También lo menciono al final del enlace de mi publicación de blog que tengo en una respuesta separada)
George Birbilis
La pregunta de respuesta 2.3 no me funciona. La sugerencia de @GeorgeBirbilis sí.
aliteralmind
@aliteralmind a juzgar por neo4j.com/docs/2.3.0/query-delete.html probablemente el problema es que después) se necesita una nueva línea o al menos un carácter de espacio, ya que actualmente escribe ...) DETACH que parece un error tipográfico (y también quizás para mantener DETACH DELETE en la misma línea, pero no estoy seguro de si es necesario). Tenga en cuenta que el artículo todavía dice "Esta consulta no es para eliminar grandes cantidades de datos, pero es agradable cuando se juega con pequeños conjuntos de datos de ejemplo".
George Birbilis
6

probablemente lo esté haciendo correctamente, solo el tablero muestra solo el ID más alto tomado y, por lo tanto, el número de nodos "activos", relaciones, aunque no hay ninguna. es solo informativo.

para asegurarse de tener un gráfico vacío, ejecute este comando:

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

si ambos le dan 0, su eliminación fue exitosa.

ulkas
fuente
sí, es cierto, pero el tablero no muestra ni la identificación más alta ni la más alta
Huei Tan
sí, esa es la forma en que lo han programado, ya que cuando tienes un clúster con miles de millones de nodos, no quieres contarlos manualmente. pero en algún lugar vi a alguien profundizando en esto y haciendo algún tipo de corrección de javascript, tal vez si tienes suerte, busques la publicación en Google.
ulkas
2

Neo4j no puede eliminar nodos que tengan una relación. Debe eliminar las relaciones antes de poder eliminar los nodos.

Pero es una forma sencilla de eliminar "TODOS" los nodos y "TODAS" las relaciones con un simple chip. Este es el código:

COINCIDIR (n) SEPARAR BORRAR n

-> DETACH DELETE eliminará todos los nodos y relaciones por Match

ardan7779
fuente
0

si el nombre del nodo es, por ejemplo: abcd, la siguiente consulta funcionará:

MATCH (n:abcd)
DETACH DELETE n

Esto solo eliminará el nodo con la etiqueta "abcd" y todas sus relaciones.

Shrikant Gourh
fuente
0

Probablemente querrá eliminar restricciones e índices

Ruben Romero
fuente
-1

Hará el truco ...

Match (n)-[r]-()
Delete n,r;
Pavan Kumar Varma
fuente
@TomRedfern más corto! XD
Huei Tan
6
Esto no elimina los nodos sin relaciones, a diferencia de la respuesta
aceptada