使用合并更新关系

时间:2015-12-05 20:08:24

标签: neo4j

我使用MERGE功能创建或更新节点,并按如下方式创建它们之间的关系:

MATCH (p:Part{f:'fff'})
MERGE (m:Item {p1: {map}.p1})
ON CREATE SET m = {map}
ON MATCH SET m += {map}
MERGE (m)-[:USED_WITH{pri:'High'}]->(p)

但是,当我重新运行它,但在后续运行时更改属性pri时,会创建一个新关系。我想要的是更新原始关系。

这样做的最佳做法是什么?

1 个答案:

答案 0 :(得分:5)

MERGE确保模式完全按照描述的方式存在,包括属性和值,否则会创建一个新模式。

当您更改模式中属性pri的值时,Cypher找不到模式的匹配项,因为属性值不同,因此它会创建新关系。

您可以在关系类型上使用MERGE, 然后使用SET更新属性值:

MERGE (m)-[r:USED_WITH]->(p)
SET r.pri = "Low"