|| apoc.refactor.invert - APOC 核心文档 - Neo4j 文档

apoc.refactor.invert

详情

语法

apoc.refactor.invert(rel, config) :: (input, output, error)

描述

反转给定 RELATIONSHIP 的方向。

输入参数

名称

类型

描述

rel

关系

要反转的关系。

config

映射

{ failOnErrors = false :: BOOLEAN }。请注意,虽然建议使用 { failOnErrors = true } 以确保事务一致性并防止部分更改应用,但这并非默认设置,因为这可能会破坏现有实现。在 APOC 2025.01 中引入

返回参数

名称

类型

描述

input

整数

原始实体的内部 ID。

output

关系

复制的实体。

error

字符串

复制过程中发生的任何错误。

使用示例

本节中的示例基于以下示例图

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 不会反转类型;相反,它会添加一个具有所需方向的新关系并删除原始关系。

© . This site is unofficial and not affiliated with Neo4j, Inc.