Precis som att skapa noder i Neo4j kan vi använda CREATE
uttalande för att skapa relationer mellan dessa noder.
Satsen för att skapa en relation består av CREATE
följt av informationen om relationen som du skapar.
Exempel
Låt oss skapa en relation mellan några av noderna som vi skapade tidigare. Låt oss först skapa en relation mellan en artist och ett album.
Vi skapar följande relation:
Här är cyphern CREATE
uttalande för att skapa ovanstå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
Förklaring av koden ovan
Först använder vi en MATCH
för att hitta de två noder som vi vill skapa relationen mellan.
Det kan finnas många noder med en artist eller Album etikett så att vi begränsar den till bara de noder vi är intresserade av. I det här fallet använder vi ett egenskapsvärde för att filtrera ner det. Vi använder namnet egenskap som vi tidigare tilldelat varje nod.
Sedan finns det den faktiska CREATE
påstående. Det är detta som skapar relationen. I det här fallet refererar den till de två noderna med variabelnamnet (dvs a
och b
) som vi gav dem i första raden. Relationen upprättas genom att använda ett ASCII-kodmönster, med en pil som indikerar riktningen för relationen:(a)-[r:RELEASED]->(b)
.
Vi ger relationen variabelnamnet r
och ge relationen en typ av RELEASED
(som i "det här bandet släppt detta album"). Relationens typ är analog med en nods etikett.
Lägga till fler relationer
Ovanstående exempel är ett mycket enkelt exempel på ett förhållande. En av de saker som Neo4j är riktigt bra på är att hantera många sammanlänkade relationer.
Låt oss bygga vidare på relationen som vi just etablerat, så att vi kan se hur lätt det är att fortsätta skapa fler noder och relationer mellan dem. Så vi kommer att skapa en nod till och lägga till ytterligare två relationer.
Vi kommer att sluta med följande graf:
Den här grafen visar att Devin Townsend spelar i bandet, uppträdde på albumet som bandet släppte, och han producerade även albumet.
Så låt oss börja med att skapa noden för Devin Townsend:
CREATE (p:Person { Name: "Devin Townsend" })
Skapa nu relationerna och returnera 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 bör nu se grafen som i föregående skärmdump.