【问题标题】:update relationship property if previous relationship exists in NEO4J如果 NEO4J 中存在先前的关系,则更新关系属性
【发布时间】:2017-07-31 17:03:08
【问题描述】:

我想用 cypher 构造一个查询,它执行以下操作:

  • 在 2 个节点之间创建关系,如果不存在关系,则使用包含持续时间的属性
  • 如果关系已经存在,更新持续时间属性 是两种关系中持续时间最短的

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

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    您需要结合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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多