Neo4J 在 Cypher 中创建临时变量
Neo4J create temp variable within Cypher
所以我的顶级问题是我正在尝试 return MERGE
是否导致了新节点的创建。
为了做到这一点,我想我可以创建一个简单的临时布尔值,使用 ON CREATE
将其设置为 TRUE
我想象它的工作原理:
MERGE(: Person {id:'Tom Jones'})
WITH false as temp_bool
ON CREATE set temp_bool = true
RETURN temp_bool
显然这是行不通的。
我正在寻找一种在 Cypher 查询中创建任意临时值的方法,并且最终能够 return 这些变量。
谢谢
你可以做你想做的,方法如下(结合我的第一个答案,加上@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;
在这样的简单合并案例中,最多可以创建一个节点,一种更简洁的方法来实现您正在寻找的内容可能是检查结果统计信息。我使用 Bolt API 的情况你应该检查:
results.consume().counters.nodes_created = 1
所以我的顶级问题是我正在尝试 return MERGE
是否导致了新节点的创建。
为了做到这一点,我想我可以创建一个简单的临时布尔值,使用 ON CREATE
我想象它的工作原理:
MERGE(: Person {id:'Tom Jones'})
WITH false as temp_bool
ON CREATE set temp_bool = true
RETURN temp_bool
显然这是行不通的。
我正在寻找一种在 Cypher 查询中创建任意临时值的方法,并且最终能够 return 这些变量。
谢谢
你可以做你想做的,方法如下(结合我的第一个答案,加上@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;
在这样的简单合并案例中,最多可以创建一个节点,一种更简洁的方法来实现您正在寻找的内容可能是检查结果统计信息。我使用 Bolt API 的情况你应该检查:
results.consume().counters.nodes_created = 1