首页 > 解决方案 > Neo4j 仅在节点存在时添加/更新属性。如果没有,那么什么也不做

问题描述

如果节点存在,它是问题Neo4j 添加/更新属性的扩展 有答案如何合并(创建或更新)节点:

您可以使用所有属性的映射一次设置它们

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

任何人都可以告诉如何仅在节点存在时更新节点,但如果节点不存在则不执行任何操作。

标签: neo4jcypher

解决方案


最简单的方法是

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

如果匹配失败,他们将无能为力。

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

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

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


推荐阅读