Neo4j Cypher查询中的MERGE子句无法正常工作

时间:2016-08-01 07:46:23

标签: neo4j cypher

我正在运行neo4j-community-3.0.0-M05。

我正在尝试使用Neo4J Cypher查询语言的MERGE子句。其解释如下given

  

它的作用类似于MATCHCREATE,它在创建数据之前先检查数据是否存在。使用MERGE定义要查找或创建的模式。通常,与MATCH一样,您只想包含要在核心模式中查找的键属性。 MERGE允许您提供要设置ON CREATE的其他属性。

我已经有以下节点:

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

现在我想添加一个虚拟属性addedOn,其虚拟值为20160108,只是为了尝试MERGE子句:

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

然而,这似乎不起作用:

enter image description here

为什么会这样?

1 个答案:

答案 0 :(得分:1)

您所看到的正是预期的行为。

由于MERGE找到了预先存在的Forrest Gump,因此使用此节点。由于你没有创建任何东西,ON CREATE处理程序不会触发。

如果你有一个ON MATCH处理程序,那么自MERGE的匹配成功以来就会被解雇。