Exclua todos os nós e relacionamentos em neo4j 1.8

92

Eu sei que esta pergunta já é feita por muitas pessoas
para a minha pesquisa, aqui estão algumas perguntas feitas antes

  1. Como deletar todos os relacionamentos no gráfico neo4j?
  2. https://groups.google.com/forum/#!topic/neo4j/lgIaESPgUgE

Mas afinal, ainda não conseguimos resolver nossos problemas,
queremos apenas deletar "TODOS" os nós e "TODOS" os relacionamentos

insira a descrição da imagem aqui

suponha que a exclusão de "TODOS" possa ver que restam 0 nós, 0 propriedades e 0 relacionamentos

Esta é a imagem que tirei depois de executar a exclusão de "TODOS" sugerida pelo fórum

Minha pergunta ainda é a mesma, como deletar todos os nós e todos os relacionamentos no neo4j

Huei Tan
fonte

Respostas:

246

A partir de 2.3.0 e até 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
fonte
2
este exemplo na documentação do Neo4j diz: "Esta consulta não é para excluir grandes quantidades de dados, mas é bom quando brincar com pequenos conjuntos de dados de exemplo.". Gostaria de saber se é melhor fazer MATCH () - [r] - () DELETE r e depois MATCH (n) DELETE n
George Birbilis
2
@GeorgeBirbilis, para fazer isso com grandes quantidades de dados, a operação deve ser dividida em várias transações e mecanismos de nova tentativa devem ser implementados.
Bob B de
1
não tenho certeza se uma nova tentativa é necessária, mas para uma maneira iterativa de fazê-lo, veja a resposta de Stefan Armbruster em stackoverflow.com/questions/29711757/… (também menciono isso no final do link da postagem do meu blog que tenho em uma resposta separada)
George Birbilis de
A pergunta de resposta 2.3 não funciona para mim. A sugestão de @GeorgeBirbilis sim.
aliteralmind de
@aliteralmind julgando de neo4j.com/docs/2.3.0/query-delete.html provavelmente o problema é que depois) uma nova linha é necessária ou pelo menos um caractere de espaço, já que atualmente ele escreve ...) DESTAQUE que se parece com um erro de digitação (e também talvez para manter DETACH DELETE na mesma linha, mas não tenho certeza se isso é necessário). Observe que o artigo ainda diz "Esta consulta não é para excluir grandes quantidades de dados, mas é boa quando se brinca com pequenos conjuntos de dados de exemplo."
George Birbilis,
6

você provavelmente está fazendo isso corretamente, apenas o painel mostra apenas o ID mais alto obtido e, portanto, o número de nós "ativos", relacionamentos, embora não haja nenhum. é apenas informativo.

para ter certeza de que tem um gráfico vazio, execute este comando:

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

se ambos derem 0, sua exclusão foi bem-sucedida.

ulkas
fonte
sim, é verdade, mas o painel não mostra nem o maior nem o maior ID
Huei Tan
sim, é assim que eles o programaram - já que quando você tem um cluster com bilhões de nós, você não quer contá-los manualmente. mas em algum lugar eu vi alguém indo mais fundo nisso e fazendo algum tipo de correção de javascript, talvez se você tiver sorte, você pesquisará o post no Google.
ulkas
2

O Neo4j não pode excluir nós que possuem uma relação. Você deve excluir as relações antes de excluir os nós.

Porém, é uma maneira simples de excluir "TODOS" os nós e "TODOS" os relacionamentos com um chyper simples. Este é o código:

CORRESPONDÊNCIA (n) RETIRAR EXCLUIR n

-> DETACH DELETE irá remover todos os nós e relações por Match

ardan7779
fonte
0

se o nome do nó for, por exemplo: abcd então a consulta abaixo funcionará:

MATCH (n:abcd)
DETACH DELETE n

Isso excluirá apenas o nó com o rótulo "abcd" e todos os seus relacionamentos.

Shrikant Gourh
fonte
0

Provavelmente você desejará deletar restrições e índices

Ruben Rosemary
fonte
-1

Vai fazer o truque ..

Match (n)-[r]-()
Delete n,r;
Pavan Kumar Varma
fonte
@TomRedfern mais curto! XD
Huei Tan
6
Isso não exclui nós sem relacionamentos, ao contrário da resposta
aceita