假设我在neo4j中有这个模型:
app.post('/auth/register', (req, res) => { ... });
我需要一个密码来改变(n1)和(n2)到(n1)和(n6)之间的关系,如下所示:
(n2) -> (n3)-> (n9)
/\
|
(n4)<-(n1)->(n5)->(n6)
| |
\/ \/
(n7) (n8)
答案 0 :(得分:4)
对于没有APOC的人,以下是如何复制关系
MATCH (n1)-[r1:foo]->(n2),(n6)
WHERE n1.id = 1 AND n2.id = 2 and n6.id = 6
CREATE (n2)-[r2:foo]->(n6)
SET r2=r1
DELETE r1
答案 1 :(得分:3)
如果安装了APOC Procedures,则可以使用图形重构过程来更改关系的终点。您需要匹配查询来获取关系,然后使用新的起始节点:
call apoc.refactor.from(rel, newStartNode)
答案 2 :(得分:2)
如a StackOverflow question about changing endpoints of a relationship中所述,Neo4j没有方法可以更改关系的开始或结束节点 - see the Javadoc for Relationship。
但您可以使用Cypher查询执行此操作,该查询使用the properties() function将第一个关系的属性复制到新关系,然后删除第一个关系。
但是,ID会在此过程中发生变化,并且Cypher's SET clause似乎不允许您手动设置某些内容的ID。