Ligesom at skabe noder i Neo4j, kan vi bruge CREATE
sætning for at skabe relationer mellem disse noder.
Udsagnet til oprettelse af en relation består af CREATE
, efterfulgt af detaljerne om den relation, du opretter.
Eksempel
Lad os skabe et forhold mellem nogle af de noder, som vi har oprettet tidligere. Lad os først skabe et forhold mellem en kunstner og et album.
Vi opretter følgende forhold:
Her er cypheren CREATE
erklæring for at skabe ovenstående relation:
MATCH (a:Artist),(b:Album) WHERE a.Name = "Strapping Young Lad" AND b.Name = "Heavy as a Really Heavy Thing" CREATE (a)-[r:RELEASED]->(b) RETURN r
Forklaring af koden ovenfor
Først bruger vi en MATCH
sætning for at finde de to noder, som vi ønsker at skabe forholdet imellem.
Der kan være mange noder med en kunstner eller Album label, så vi indsnævrer det til kun de noder, vi er interesserede i. I dette tilfælde bruger vi en egenskabsværdi til at filtrere den ned. Vi bruger navnet egenskab, som vi tidligere havde tildelt hver node.
Så er der den faktiske CREATE
udmelding. Det er det, der skaber forholdet. I dette tilfælde refererer den til de to noder med variabelnavnet (dvs. a
og b
), som vi gav dem i første linje. Relationen etableres ved at bruge et ASCII-kodemønster med en pil, der angiver retningen af forholdet:(a)-[r:RELEASED]->(b)
.
Vi giver forholdet et variabelnavn r
og giv forholdet en type RELEASED
(som i "dette band udgivet dette album"). Relationens type er analog med en nodes etiket.
Tilføjelse af flere relationer
Ovenstående eksempel er et meget simpelt eksempel på et forhold. En af de ting, som Neo4j er rigtig god til, er at håndtere mange indbyrdes forbundne relationer.
Lad os bygge videre på det forhold, vi lige har etableret, så vi kan se, hvor nemt det er at fortsætte med at skabe flere noder og relationer mellem dem. Så vi vil oprette en node mere og tilføje yderligere to relationer.
Vi ender med følgende graf:
Denne graf viser, at Devin Townsend spiller i bandet, optrådte på det album, som bandet udgav, og han producerede også albummet.
Så lad os starte med at oprette noden til Devin Townsend:
CREATE (p:Person { Name: "Devin Townsend" })
Opret nu relationerne og returner grafen:
MATCH (a:Artist),(b:Album),(p:Person) WHERE a.Name = "Strapping Young Lad" AND b.Name = "Heavy as a Really Heavy Thing" AND p.Name = "Devin Townsend" CREATE (p)-[pr:PRODUCED]->(b), (p)-[pf:PERFORMED_ON]->(b), (p)-[pl:PLAYS_IN]->(a) RETURN a,b,p
Du skulle nu se grafen som i det forrige skærmbillede.