我正在运行neo4j-community-3.0.0-M05。
我正在尝试使用Neo4J Cypher查询语言的MERGE子句。其解释如下given
它的作用类似于
MATCH
或CREATE
,它在创建数据之前先检查数据是否存在。使用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;
然而,这似乎不起作用:
为什么会这样?
答案 0 :(得分:1)
您所看到的正是预期的行为。
由于MERGE
找到了预先存在的Forrest Gump,因此使用此节点。由于你没有创建任何东西,ON CREATE
处理程序不会触发。
如果你有一个ON MATCH
处理程序,那么自MERGE
的匹配成功以来就会被解雇。