2016-08-01 17 views
0

Ich verwende neo4j-community-3.0.0-M05.MERGE-Klausel in Neo4j Cypher Abfrage funktioniert nicht

Ich probiere die MERGE-Klausel der Neo4J Cypher Query Language aus. Seine Erklärung ist given als

folgt Es wirkt wie eine Kombination aus MATCH oder CREATE, die zunächst für die Existenz von Daten überprüft, bevor es zu schaffen. Mit MERGE definieren Sie ein Muster, das gefunden oder erstellt werden soll. Normalerweise möchten Sie, wie bei MATCH, nur die Schlüsseleigenschaft einschließen, nach der in Ihrem Kernmuster gesucht werden soll. MERGE können Sie zusätzliche Eigenschaften angeben, die Sie festlegen möchten ON CREATE.

ich bereits folgende Knoten haben:

(:Movie{title:"Forrest Gump", released:1994}) 

und jetzt ich MERGE Klausel nur versuchen, eine Dummy-Eigenschaft addedOn mit Dummy-Wert 20160108, um es hinzuzufügen wollte:

MERGE (a:Movie{title:"Forrest Gump"}) 
ON CREATE SET a.addedOn= "20160108" 
RETURN a; 

jedoch das scheint nicht zu funktionieren:

enter image description here

Warum ist das so?

Antwort

1

Was Sie sehen, ist genau das erwartete Verhalten.

Da MERGE Ihren bereits vorhandenen Forrest Gump findet, wird dieser Knoten verwendet. Der Handler ON CREATE wird nicht ausgelöst, da Sie nichts erstellt haben.

Wenn Sie einen ON MATCH Handler gehabt haben, wäre dieser ausgelöst worden, seit MERGE das Match erfolgreich war.

+0

großartig ... gerade hinzugefügt 'ON MATCH':' MERGE (a: Film {title: "Forrest Gump"}) ON MATCH SET a.addedOn = "20160108" ERSTELLEN SET a.addedOn = "20160108" RETURN a; '. Ist sich dessen nicht bewusst. – Mahesha999