#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