在neo4j中,如果新记录不存在,如何创建新记录,如果是,则更新属性?

时间:2017-10-26 04:55:58

标签: neo4j cypher

我的数据如下:

Name | Age | Status
-----|-----|--------
Bill |  23 | Married
John |  19 | Single

现在,我想按名称搜索记录" Jim"。如果找到记录,我想将年龄设置为30,将状态设置为单。如果没有,我想创建一个名为" Jim"的新记录。年龄30岁,身份单身。

我设法使用merge命令执行此操作:

MERGE (n:person {name:"Jim"}) 
on match set age=30, status="Single"
on create set age=30, status="Single"

但这对我来说似乎效率低下,因为我在匹配和创建上重复相同的陈述。有更好的方法吗?

(我提出问题的方式可能令人困惑。我为此道歉。)

1 个答案:

答案 0 :(得分:2)

由于您执行的操作相同on matchon create我认为您只需将其删除,然后在SET之后的两个属性中执行MERGE。这种方式有效:

MERGE (n:person {name:"Jim"}) 
SET n.age=30, n.status="Single"