Neo4J在Cypher中创建临时变量

Ero*_*lun 4 variables neo4j cypher neo4jclient

所以我的顶级问题是我试图返回是否MERGE导致创建新节点.

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

我怎么想象它的工作原理:

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

显然这不起作用.

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

谢谢

Fro*_*its 10

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

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;
Run Code Online (Sandbox Code Playgroud)

  • 实际上,您可以在同一个查询中去掉 temp 属性:`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 结果 REMOVE tom.temp_bool RETURN 结果;` (2认同)

小智 2

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

results.consume().counters.nodes_created = 1
Run Code Online (Sandbox Code Playgroud)