Neo4J在Cypher中创建临时变量

时间:2015-02-06 21:37:53

标签: variables neo4j cypher neo4jclient

所以我的顶级问题是我正在尝试返回MERGE是否导致创建新节点。

为了做到这一点,我想我可以创建一个简单的临时布尔值,使用ON CREATE将其设置为TRUE

我的想象如何运作:

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

显然这不起作用。

我正在寻找一种在Cypher查询中创建任意临时值的方法,并且能够最终返回这些变量。

由于

2 个答案:

答案 0 :(得分:10)

你可以做你想做的事,这里是如何(我的第一个答案的组合,@ cybersam&#39的补充)。您只需使用您创建的节点属性执行此操作,然后删除,而不是像您一直在尝试的未绑定变量。

MERGE(tom:Person {id:'Tom Jones'})
ON CREATE set tom.temp_bool = true
ON MATCH set tom.temp_bool = false
WITH tom, tom.temp_bool AS result
REMOVE tom.temp_bool
RETURN result;

答案 1 :(得分:0)

在这样的简单合并情况下,可以创建最多一个节点,一种更简洁的方法来实现您正在寻找的内容,可以检查结果统计信息。我应该检查使用Bolt API的情况:

results.consume().counters.nodes_created = 1