Neo4j merge仅在创建时返回某些内容

Neo4j merge仅在创建时返回某些内容,neo4j,cypher,Neo4j,Cypher,如果Neo4j的合并不存在,它将创建新节点。它在CREATE上有和MATCH上有两个区别。但是,如果创建了节点,是否有方法返回与节点是否匹配不同的信息 MERGE (charlie { name:'Charlie Sheen' }) ON CREATE SET charlie.name = 'Charlie' RETURN charlie 类似于:在创建返回1时,在合并返回0时,有一个: 基本上,这会将0或1标志存储在“lastSeen”属性的存在与否中 您的查询有一个奇怪之处,就是您在“Ch

如果Neo4j的合并不存在,它将创建新节点。它在CREATE上有
和MATCH上有
两个区别。但是,如果创建了节点,是否有方法返回与节点是否匹配不同的信息

MERGE (charlie { name:'Charlie Sheen' })
ON CREATE SET charlie.name = 'Charlie'
RETURN charlie
类似于:
在创建返回1时,在合并返回0时,有一个:

基本上,这会将0或1标志存储在“lastSeen”属性的存在与否中


您的查询有一个奇怪之处,就是您在“Charlie Sheen”上进行匹配,但随后将匹配的值(
name
)修改为“Charlie”。这很奇怪——这意味着,因为您每次都在修改它,即使您在MATCH
子句上添加一个
,它也不会触发。每次都将创建一个新的查询,然后对其进行修改,保证下次运行该查询时将创建一个新的查询。我想,除非是特殊情况,否则稍后在查询中修改匹配条件是个坏主意。

检查此问题的答案。我问题中的密码只是一个随机的例子。我只是为了这个问题写下来的。我想在状态更新
likes
上实现此功能。基本上,我想确保一篇帖子不会被用户两次喜欢,并且查询提供的
信息有(…)
信息。你的回答解决了我的问题。谢谢
MERGE (keanu:Person { name:'Keanu Reeves' })
ON CREATE SET keanu.created = timestamp()
ON MATCH SET keanu.lastSeen = timestamp()
RETURN keanu.name, has(keanu.lastSeen);