Neo4j仅在节点存在时添加/更新属性。如果没有,那就什么也不做

时间:2018-08-01 13:26:50

标签: neo4j cypher

问题Neo4j Add/update properties if node exists的延伸 答案是如何合并(创建或更新)节点:

  

您可以使用所有属性的地图一次将它们全部设置

merge (n:Node {name: 'John'}) set n = {name: 'John', age: 34, coat: 'Yellow', hair: 'Brown'} return n

  

如果您只想替换年龄和外套属性,则可以这样做。

merge (n:Node {name: 'John'}) set n.age = 34, n.coat = 'Yellow' return n

  

或者您也可以将其添加为地图

merge (n:Node {name: 'John'}) set n += {age: 34, coat: 'Yellow'} return n

任何人都只能告诉它如何更新节点(如果存在),但是如果节点不存在,则什么也不做。

1 个答案:

答案 0 :(得分:3)

最简单的方法是

MATCH (n{id:{uuid}) SET n.prop=true

如果比赛失败,他们将无事可做SET。

假设您希望在此之后仍然有行; (因此您仍然可以为更复杂的查询返回数据),只需将匹配设置为可选

...
OPTIONAL MATCH (n{id:{uuid}) SET n.prop=true

同样,如果匹配失败,n将为null,而SET将不执行任何操作