sql >> Database teknologi >  >> RDS >> Mysql

Neo4j - Slet et forhold ved hjælp af Cypher

Du kan slette relationer på samme måde som at slette noder — ved at matche de relationer, du vil slette.

Du kan slette en eller flere relationer på én gang. Du kan endda slette alle relationer i databasen.

For det første, som en genopfriskning af hukommelsen, er her de relationer, vi oprettede tidligere:

Lad os slette forholdet af typen RELEASED .

Der er flere måder, vi kan gå til. Lad os se på tre.

Følgende udsagn er ret bred - den vil slette alle relationer af typen UDGIVET :

MATCH ()-[r:RELEASED]-() 
DELETE r

Du kunne også være mere specifik og skrive noget som dette:

MATCH (:Artist)-[r:RELEASED]-(:Album) 
DELETE r

Ovenstående erklæring vil matche alle kunstnere noder, der har en relationstype RELEASED med et Album node.

Du kunne være endnu mere specifik og gøre noget som dette:

MATCH (:Artist {Name: "Strapping Young Lad"})-[r:RELEASED]-(:Album {Name: "Heavy as a Really Heavy Thing"}) 
DELETE r

Enhver af disse udsagn vil resultere i UDGIVET forholdet slettes. Grafen vil se sådan ud:

Sletning af noder med vedhæftede relationer

Noder kan ikke slettes, hvis de stadig har relationer knyttet til dem.

Hvis vi prøver at køre følgende sætning:

MATCH (a:Artist {Name: "Strapping Young Lad"}) DELETE a

Vi får følgende fejlmeddelelse:

Dette skyldes, at den node har et forhold forbundet.

En mulighed er at slette alle relationer og derefter slette noden.

En anden mulighed er at bruge DETACH DELETE klausul. DETACH DELETE klausul lader dig slette en node og alle relationer forbundet til den.

Så vi kan ændre ovenstående udtalelse til dette:

MATCH (a:Artist {Name: "Strapping Young Lad"}) DETACH DELETE a

Kørsel af denne erklæring vil resultere i følgende succesmeddelelse:

Slet hele databasen

Du kan tage DETACH DELETE et skridt videre og slet hele databasen.

Du skal blot fjerne eventuelle filtreringskriterier, og det vil slette alle noder og alle relationer.

Gå videre og udfør følgende sætning:

MATCH (n) DETACH DELETE n

Vi har ikke længere nogen data i databasen... så jeg tror det er slutningen på selvstudiet :)

Hvis du er interesseret i at lære mere om at arbejde med Neo4j, så tjek den officielle Neo4j-dokumentation.


  1. Migrering fra MySQL Enterprise til MariaDB 10.3

  2. Sådan fungerer MICROSECOND() i MariaDB

  3. Markørbaserede poster i PostgreSQL

  4. Sådan fungerer UGE() i MariaDB