如何使用Cypher"替换"Neo4j中的关系?

Byr*_*uth 2 neo4j cypher

我有一组我想要"替换"的关系,即创建一个新关系,然后删除旧关系,因为关系是不可变的.

我最初假设这个:

MATCH paths=()-[:BRANCH]-()
FOREACH (old in relationships(paths) |
    WITH startNode(old) as n1, endNode(old) as n2
    MERGE (n1)-[new:CONTAINS]-(n2)
    SET new = old
    DELETE r
)
Run Code Online (Sandbox Code Playgroud)

WITH关键字是不允许的,必须能够弄清楚如何将本地变量分配给起始节点和结束节点.

Eve*_*man 7

您可以再次使用FOREACH来破解WITH,例如:

FOREACH (n1 in [startNode(old)]| ... // you now have an identifier n1 referring to startNode(old)
Run Code Online (Sandbox Code Playgroud)

如果这只是长度为1的路径,我不确定我是否看到了这样做的价值.你不能这样做:

MATCH (n1)-[old:BRANCH]->(n2) 
CREATE (n1)-[new:CONTAINS]->(n2) 
DELETE old
Run Code Online (Sandbox Code Playgroud)