Search code examples
variablesneo4jcypherneo4jclient

Neo4J create temp variable within Cypher


So my Top-Level problem is I am trying to return whether a MERGE resulted in the creation of a new Node or not.

In order to do this I was thinking I could just create a simple temp boolean setting it to TRUE using ON CREATE

How I imagine it working:

MERGE(: Person {id:'Tom Jones'})
WITH false as temp_bool
ON CREATE set temp_bool = true
RETURN temp_bool

Obviously this does not work.

I am looking for a way to create arbitrary temp values within a Cypher query, and have the ability to return those variables in the end.

Thanks


Solution

  • In simple merging cases like this where maximum one node could be created, a cleaner way to achieve what you are looking for could be checking the result stats. I case of using Bolt API you should check:

    results.consume().counters.nodes_created = 1