如果NEO4J中存在先前的关系,则更新关系属性

时间:2017-03-10 11:07:19

标签: neo4j cypher

我想在cypher中构建一个执行以下操作的查询:

  • 如果已存在关系
  • ,则在2个节点之间创建一个包含持续时间的属性的关系
  • 如果已存在关系,请更新持续时间属性 成为两个关系中最短的持续时间

比较和更新部分是我无法在密码中实现的。所以对此部分的任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:9)

您需要合并MERGE ON CREATE | ON MATCHCASE expression。例如:

MATCH (A:City {id: 1})
MATCH (B:City {id: 2})
WITH A, B, toInteger(rand()*100) as newDuration
MERGE (A)-[r:next]->(B)
  ON CREATE SET r.duration = newDuration
  ON MATCH  SET r.duration = CASE 
                                 WHEN r.duration > newDuration 
                                 THEN newDuration 
                                 ELSE r.duration 
                             END
RETURN r.duration