Usuń wszystkie węzły i relacje w neo4j 1.8


92

Wiem, że to pytanie jest zadawane przez wiele osób już
w moich badaniach, oto kilka pytań zadanych wcześniej

  1. Jak usunąć wszystkie relacje z wykresu neo4j?
  2. https://groups.google.com/forum/#!topic/neo4j/lgIaESPgUgE

Ale przecież nadal nie możemy rozwiązać naszych problemów,
chcemy po prostu usunąć „WSZYSTKIE” węzły i „WSZYSTKIE” relacje

wprowadź opis obrazu tutaj

załóżmy, że usuń "WSZYSTKO" widać, że zostało 0 węzłów, 0 właściwości i 0 relacji

To jest zrzut ekranu, który zrobiłem po wykonaniu polecenia usuwania „WSZYSTKIE” sugerowanego przez forum

Moje pytanie wciąż jest takie samo, jak usunąć wszystkie węzły i wszystkie relacje w neo4j

Odpowiedzi:


247

Od 2.3.0 i do 3.3.0

MATCH (n)
DETACH DELETE n

Dokumenty

Pre 2.3.0

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

Dokumenty


2
ten przykład w dokumentach Neo4j mówi jednak: „To zapytanie nie służy do usuwania dużych ilości danych, ale jest przyjemne podczas zabawy z małymi przykładowymi zestawami danych.”. Zastanawiam się, czy lepiej jest wykonać MATCH () - [r] - () DELETE r, a następnie MATCH (n) DELETE n
George Birbilis Kwietnia

2
@GeorgeBirbilis, aby to zrobić na dużych ilościach danych, operacja musi zostać podzielona na wiele transakcji i należy wdrożyć mechanizmy ponownej próby.
Bob B,

1
nie jestem pewien, czy ponowna próba jest potrzebna, ale aby to zrobić iteracyjnie, zobacz odpowiedź Stefana Armbrustera na stackoverflow.com/questions/29711757/ ... (wspominam o tym również na końcu mojego linku do wpisu na blogu, który mam w osobnej odpowiedzi)
George Birbilis

Pytanie 2.3 nie działa dla mnie. @GeorgeBirbilis sugestia tak.
aliteralmind

@aliteralmind sądząc z neo4j.com/docs/2.3.0/query-delete.html prawdopodobnie problem polega na tym, że po) potrzebny jest znak nowej linii lub przynajmniej znak spacji, ponieważ obecnie pisze ...) DETACH, który wygląda jak znak literówka (i może również, aby zachować DETACH DELETE w tym samym wierszu, ale nie jestem pewien, czy jest to wymagane). Zwróć uwagę, że artykuł nadal mówi: „To zapytanie nie służy do usuwania dużych ilości danych, ale jest przyjemne podczas zabawy z małymi przykładowymi zestawami danych”.
George Birbilis

6

prawdopodobnie robisz to poprawnie, tylko dashboard pokazuje tylko wyższy wzięty ID, a tym samym liczbę „aktywnych” węzłów, relacji, chociaż nie ma żadnych. to jest tylko informacyjne.

aby upewnić się, że masz pusty wykres, uruchom to polecenie:

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

jeśli oba dadzą 0, usuwanie powiodło się.


tak, to prawda, ale deska rozdzielcza nie pokazuje ani wyższego, ani najwyższego ID
Huei Tan

tak, tak to zaprogramowali - od kiedy masz klaster z miliardami węzłów, nie chcesz ich liczyć ręcznie. ale gdzieś widziałem, że ktoś zagłębiał się w to i robił jakąś poprawkę javascript, może jeśli będziesz miał szczęście, wygooglujesz wpis.
ulkas


3

Neo4j nie może usuwać węzłów, które mają relację. Musisz usunąć relacje, zanim będziesz mógł usunąć węzły.

Ale jest to prosty sposób na usunięcie „WSZYSTKICH” węzłów i „WSZYSTKICH” relacji za pomocą prostego szypera. To jest kod:

MATCH (n) DETACH DELETE n

-> DETACH DELETE usunie wszystkie węzły i relacje według dopasowania


0

jeśli nazwa węzła to na przykład: abcd to poniższe zapytanie zadziała:

MATCH (n:abcd)
DETACH DELETE n

Spowoduje to usunięcie tylko węzła z etykietą „abcd” i wszystkich jego relacji.



Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.