sql >> Databasteknik >  >> RDS >> Mysql

Neo4j - Ta bort ett förhållande med Cypher

Du kan ta bort relationer på samma sätt som att ta bort noder — genom att matcha relationen/relationerna du vill ta bort.

Du kan ta bort en eller flera relationer på en gång. Du kan till och med ta bort alla relationer i databasen.

Först, som en minnesuppfräschning, här är de relationer som vi skapade tidigare:

Låt oss ta bort relationen av typen RELEASED .

Det finns flera sätt vi kan gå tillväga för. Låt oss titta på tre.

Följande påstående är ganska brett — det tar bort alla relationer av typen RELEASED :

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

Du kan också vara mer specifik och skriva något så här:

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

Ovanstående uttalande kommer att matcha alla artist noder som har en relationstyp RELEASED med ett album nod.

Du kan vara ännu mer specifik och göra något så här:

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

Alla dessa uttalanden kommer att resultera i RELEASED relation raderas. Grafen kommer att se ut så här:

Ta bort noder med bifogade relationer

Noder kan inte tas bort om de fortfarande har relationer kopplade till dem.

Om vi ​​försöker köra följande sats:

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

Vi kommer att få följande fel:

Detta beror på att den noden har en relation kopplad.

Ett alternativ är att ta bort alla relationer och sedan ta bort noden.

Ett annat alternativ är att använda DETACH DELETE klausul. DETACH DELETE sats låter dig ta bort en nod och alla relationer som är kopplade till den.

Så vi kan ändra ovanstående påstående till detta:

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

Att köra det uttalandet kommer att resultera i följande framgångsmeddelande:

Ta bort hela databasen

Du kan ta DETACH DELETE ett steg längre och radera hela databasen.

Ta helt enkelt bort eventuella filtreringskriterier så tar det bort alla noder och alla relationer.

Fortsätt och kör följande sats:

MATCH (n) DETACH DELETE n

Vi har inte längre några data i databasen... så jag antar att det är slutet på handledningen :)

Om du är intresserad av att lära dig mer om att arbeta med Neo4j, kolla in den officiella Neo4j-dokumentationen.


  1. Hur får man kvartal från datum i Oracle?

  2. Fel 1022 - Kan inte skriva; dubblettnyckel i tabellen

  3. Hur man sammanfogar strängar i SQL

  4. MYSQL OR vs IN prestanda