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

Ant*_*ton 3 neo4j cypher

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

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

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

std*_*b-- 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
Run Code Online (Sandbox Code Playgroud)