2016-08-01 81 views
0

我正在运行neo4j-community-3.0.0-M05。Neo4j中的MERGE子句Cypher查询不起作用

我正在尝试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

你所看到的恰恰是预期的行为。

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

如果你已经有一个ON MATCH处理程序,那么这个人将会被解雇,因为MERGE的匹配成功了。

+0

很好......刚刚添加了'ON MATCH':'MERGE(a:Movie {title:“Forrest Gump”})MATCH SET a.addedOn =“20160108”ON CREATE SET a.addedOn =“20160108”RETURN一个;'。没有意识到这一点。 – Mahesha999