2016-04-18 9 views
0

Ich versuche, den Code auf this GraphGist ausführen, um mit dem Buendia-Stammbaum in Neo4j zu spielen.Beziehung zwischen Knoten in Neo4j nicht korrekt angewendet

Wenn ich zwei Knoten erstellen und versuchen, sie mit einer Beziehung zu verbinden, wie zum Beispiel:

CREATE (JoseArcadioBuendia:Male {name:'Jose Arcadio Buendia',Gender:'Male'}) 

dann

CREATE (UrsulaIguaran:Female {name:'Ursula Iguaran',Gender:'Female'}) 

dann

CREATE (JoseArcadioBuendia)-[:HUSBAND]->(UrsulaIguaran) 

ich diese:

enter image description here

Warum ist dieser Code falsch? Die Syntax sieht gut aus und scheint für den Autor des Gist zu laufen. Mache ich etwas falsch?

+0

die Abfrage funktioniert für mich. Ich habe nur Paste kopiert und ausgeführt. es funktioniert .. – BDR

+0

ja, cybersam klärte es auf - Bezeichner existieren nur für das Leben einer einzelnen Frage. Ich hatte Zeile für Zeile einen Eintrag gemacht. –

+0

Verstanden. Ich habe mich gefragt – BDR

Antwort

2

Ich nehme an, dass Sie nicht kommen alle 3 CREATE Klauseln in einer einzigen Abfrage.

Cypher-Kennungen (wie JoseArcadioBuendia und UrsulaIguaran) existieren nur für die Lebensdauer einer einzelnen Abfrage. Die Datenbank behält diese Kennungen nicht bei. Also, wenn Sie eine Abfrage haben, die nur CREATE (JoseArcadioBuendia)-[:HUSBAND]->(UrsulaIguaran) enthält, würde neo4j nicht wissen, dass die Knoten bereits existieren und würde daher 2 neue Knoten für Sie (sowie die Beziehung) erstellen.

Wenn Sie alle 3 Klauseln in eine einzige Abfrage geschrieben hätten, hätten Sie die erwarteten Ergebnisse gesehen. Andernfalls müsste Ihre Abfrage zuerst MATCH verwenden, um diese Identifikatoren mit den richtigen Knoten zu verknüpfen (ähnlich der @ Bonds-Antwort).

+0

ah! Aha! Ich denke also, man könnte sagen, dass das Problem letztlich auf die Verwendung der Webschnittstelle und nicht des Terminals zurückzuführen ist. –

+1

Eigentlich können Sie mehrere Abfragen im Neo4j-Browser verwenden. – cybersam

0

Die dritte Zeile ist falsch. Sie geben keine Knoten an. Versuchen Sie Folgendes:

MATCH (a:Male), (b:Female) 
WHERE a.name = 'Jose Arcadio Buendia' AND b.name = 'Ursula Iguaran' 
CREATE (a)-[:HUSBAND]->(b); 
+0

Ich bekomme 'Eine einzige Beziehungstyp muss für CREATE angegeben werden (Zeile 3, Spalte 11 (Offset: 104))' –

+0

Ich habe @ Bonds Antwort bearbeitet, um 'HUSBAND' einen Beziehungstyp (durch Hinzufügen des": "Präfix", und um Ursalas Namen zu beheben. – cybersam

Verwandte Themen