условное создание отношений?

#cypher #redisgraph

#шифр #повторный рисунок

Вопрос:

У меня есть запрос на перемещение отношений, но если существуют существующие целевые отношения, они не заменяются, поэтому в итоге я получаю два похожих соединения.

     match (new:state) where new.val = {new}
    match (b:state)-[r1:q]->(p:state)-[r2:q]->(n:state)
    where b.val = {blast} and p.val = {past} and n.val = {now}
    merge (b)-[nr1:q]->(new)-[nr2:q]->(n)
    set nr1.val = r1.value, nr2.val = r2.val
    delete r1, r2
  

если (b)-[:q]-> (new) существует, nr1 не переопределяет его, а создает новое отношение, поэтому в итоге я получаю два.

Я хочу создать nr1 или nr2, если r1 или r2 еще не присутствуют, и если присутствуют, суммируйте значения, в противном случае просто скопируйте их

Ответ №1:

Вы можете указать свои две связи в отдельных предложениях СЛИЯНИЯ:

     match (new:state) where new.val = {new}
    match (b:state)-[r1:q]->(p:state)-[r2:q]->(n:state)
    where b.val = {blast} and p.val = {past} and n.val = {now}
    merge (b)-[nr1:q]->(new)
    merge (new)-[nr2:q]->(n)
    set nr1.val = r1.value, nr2.val = r2.val
    delete r1, r2