Stejně jako při vytváření uzlů v Neo4j můžeme použít CREATE
k vytvoření vztahů mezi těmito uzly.
Příkaz pro vytvoření vztahu se skládá z CREATE
, za kterým následují podrobnosti o vztahu, který vytváříte.
Příklad
Vytvořme vztah mezi některými uzly, které jsme vytvořili dříve. Nejprve vytvořte vztah mezi interpretem a albem.
Vytvoříme následující vztah:
Zde je Cypher CREATE
příkaz k vytvoření výše uvedeného vztahu:
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
Vysvětlení výše uvedeného kódu
Nejprve použijeme MATCH
příkaz k nalezení dvou uzlů, mezi kterými chceme vytvořit vztah.
Může existovat mnoho uzlů s Umělcem nebo Album label, takže jej zúžíme pouze na ty uzly, které nás zajímají. V tomto případě použijeme hodnotu vlastnosti k filtrování. Používáme Jméno vlastnost, kterou jsme dříve přiřadili každému uzlu.
Pak je tu skutečný CREATE
prohlášení. To je to, co vytváří vztah. V tomto případě odkazuje na dva uzly názvem proměnné (tj. a
a b
), které jsme jim dali v prvním řádku. Vztah je vytvořen pomocí vzoru kódu ASCII se šipkou označující směr vztahu:(a)-[r:RELEASED]->(b)
.
Vztahu dáme název proměnné r
a dejte vztahu typ RELEASED
(jako v „tato kapela vydaná toto album"). Typ vztahu je analogický k označení uzlu.
Přidání dalších vztahů
Výše uvedený příklad je velmi jednoduchým příkladem vztahu. Jednou z věcí, ve kterých je Neo4j opravdu dobrý, je zvládnutí mnoha vzájemně propojených vztahů.
Pojďme stavět na vztahu, který jsme právě navázali, abychom viděli, jak snadné je pokračovat ve vytváření dalších uzlů a vztahů mezi nimi. Vytvoříme tedy ještě jeden uzel a přidáme další dva vztahy.
Skončíme s následujícím grafem:
Tento graf ukazuje, že Devin Townsend hraje v kapele, hrál na albu, které skupina vydala, a také album produkoval.
Začněme tedy vytvořením uzlu pro Devin Townsend:
CREATE (p:Person { Name: "Devin Townsend" })
Nyní vytvořte vztahy a vraťte graf:
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
Nyní byste měli vidět graf jako na předchozím snímku obrazovky.