2017-05-27 8 views
-3

Ich habe 2 Knoten mit einem Eigenschaftsnamen A und B. Jeder hat mehrere Telefonkontakte gespeichert.Neo4j Wie man eine Beziehung herstellt

  • Benutzer A haben Benutzer C in seine Kontakte
  • Benutzer B haben Benutzer C in seine Kontakte

    contacts

Wie Benutzer C mit einer Beziehung zu verbinden, dass er KNOWS Benutzer A und B?

Als erstes muss ich Benutzer C zusammenführen, als eine Beziehung namens KNOWS.

Antwort

0

Wie kann man Benutzer C mit einer Beziehung verbinden, die er Benutzer A und B kennt?

einfach tun:

MATCH(a {name:"A"}) // Match nodes with property name = "A" and store it in a variable 
MATCH(b {name:"B"}) // Match nodes with property name = "B" and store it in b variable 
MERGE (c {name:"C"}) // merge c (will be created if a node with name = "C does not exists yet") 
CREATE UNIQUE (c)-[:KNOWS]->(a) // Will create :KNOWS relationship from c to a if it not exists 
CREATE UNIQUE (c)-[:KNOWS]->(b) // Will create :KNOWS relationship from c to b if it not exists 
0

Sie auch MERGE beide C erstellen können und die KENNT Beziehung in einem Schritt:

MATCH (a:user {name:'A'}) MERGE (c:user {name:'C'})-[:KNOWS]->(a); 

Hier können Sie für einen suchen: user Knoten mit Eigenschaft Name = 'A'. Wenn dies gefunden wird, wird das Ergebnis an die MERGE-Klausel übergeben. Sie geben MERGE einen vollständigen Pfad; MERGE erstellt die Teile des Pfades, die nicht existieren. In diesem Fall wird ein Knoten vom Typ erstellt: user und geben Sie eine Name Eigenschaft auf "C" festgelegt; Es wird auch eine: KNOWS-Beziehung von C nach A erstellt. MERGE verwendet den vorhandenen Knoten a, den es gegeben hat. Auf diese Weise unterscheidet sich MERGE von CREATE, weil CREATE versuchen würde, alles zu erstellen, einschließlich eines neuen Knotens a.

Wenn Sie hat andere Eigenschaften auf Ihrem Knoten C setzen Sie diese Eigenschaften bei gleichzeitig gesetzt könnten die ON CREATE Unter Klausel:

MATCH (a:user {name:'A'}) MERGE (c:user {name:'C'})-[:KNOWS]->(a) ON CREATE SET c={name:'C', phone:'+1 234 5678'}; 
Verwandte Themen