apoc.refactor.invert
语法 |
|
||
描述 |
反转给定 |
||
输入参数 |
名称 |
类型 |
描述 |
|
|
要反转的关系。 |
|
|
|
|
|
返回参数 |
名称 |
类型 |
描述 |
|
|
原始实体的内部 ID。 |
|
|
|
复制的实体。 |
|
|
|
复制过程中发生的任何错误。 |
|
使用示例
本节中的示例基于以下示例图
CREATE (mark:Person {name: "Mark", city: "London"})
CREATE (jennifer:Person {name: "Jennifer", city: "St Louis"})
CREATE (mark)-[:FOLLOWS]->(jennifer);
以下使用 APOC 和 Cypher 反转 FOLLOWS 关系,使 Jennifer 成为起始节点
apoc.refactor.invert
MATCH ()-[rel:FOLLOWS]->()
CALL apoc.refactor.invert(rel, { failOnErrors = true })
YIELD input, output
RETURN input, output;
使用 Cypher
MATCH (startNode)-[rel:FOLLOWS]->(endNode)
CALL (*) {
WITH id(rel) AS oldId, properties(rel) AS relProps, type(rel) AS relType
DELETE rel
MERGE (startNode)<-[newRel:$(relType)]-(endNode)
SET newRel = relProps
RETURN oldId AS oldId, newRel AS newRel
}
RETURN oldId, newRel;
| input | output |
|---|---|
14 |
[:FOLLOWS] |
我们可以通过运行以下查询来列出所有 Person 节点
MATCH path = ()-[rel:FOLLOWS]->()
RETURN path;
| 路径 |
|---|
(:Person {name: "Jennifer", city: "St Louis"})-[:FOLLOWS]→(:Person {name: "Mark", city: "London"}) |
|
APOC 不会反转类型;相反,它会添加一个具有所需方向的新关系并删除原始关系。 |