合并查询:在创建时设置地图和“已创建”属性

时间:2013-07-18 16:41:23

标签: neo4j cypher

如果用户尚未存在,我正在尝试创建用户,然后知道是否发生了创建。

此语法始终执行第二组:

MERGE (n:User {email: {email}})
ON CREATE n
  SET n = {user}
  SET n.created = timestamp()
WITH n WHERE n.created = timestamp()
RETURN n

我猜第二组实际上并不是ON CREATE子句的一部分,如下所示:

MERGE (n:User {email: {email}})
ON CREATE n
  SET n = {user}
SET n.created = timestamp()
WITH n WHERE n.created = timestamp()
RETURN n

但是,多个集合的替代语法会导致“错误:期望的有效查询正文”:

MERGE (n:User {email: {email}})
ON CREATE n
  SET n = {user}, n.created = timestamp()
WITH n WHERE n.created = timestamp()
RETURN n

作为一种解决方法,我决定使用用户地图传递创建的时间戳,但有没有办法实现这一目标?它是按预期工作还是有错误,也许?

1 个答案:

答案 0 :(得分:0)

最后一个应该在IMO工作 - 你能解决github问题吗?我们会看到neo家伙说的话,但我认为将逗号分隔的集合应该没问题。

作为替代方案,您可以执行多个ON CREATE:

MERGE (n:User {email: {email}})
ON CREATE n
  SET n = {user}
ON CREATE n
  SET n.created = timestamp()
WITH n WHERE n.created = timestamp()
RETURN n