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

apoc.refactor.collapseNode

详情

语法

apoc.refactor.collapseNode(nodes, relType) :: (input, output, error)

描述

折叠给定 NODE,并将其替换为给定类型的 RELATIONSHIP

输入参数

名称

类型

描述

nodes

ANY

要折叠的节点。节点可以是 STRING (elementId())、INTEGER (id())、NODE 类型,或 LIST<STRING | INTEGER | NODE> 类型。

relType

STRING

生成的关系类型名称。

返回参数

名称

类型

描述

input

INTEGER

给定关系的 ID。

output

RELATIONSHIP

具有更新类型的新关系的 ID。

error

STRING

如果发生错误,则为错误消息。

使用 Cypher 重构节点

Cypher 中可以动态引用节点标签和关系类型,而无需使用 APOC。

动态创建、匹配和合并标签和类型的 Cypher 语法
CREATE (n1:$(label))-[r:$(type)]->(n2:$(label))
MERGE (n1:$(label))-[r:$(type)]->(n2:$(label))
MATCH (n1:$(label))-[r:$(type)]->(n2:$(label))

动态计算的类型必须评估为 STRINGLIST<STRING>。有关更多信息,请参阅 Cypher 手册 → CREATEMERGEMATCH

使用 CALL {…​} IN CONCURRENT TRANSACTIONS 可以在 Cypher 中实现批处理和并行执行。有关更多信息,请参阅 CALL 事务中的子查询 → 并发事务

使用示例

本节示例基于以下示例图

CREATE (flight:Flight {number: "BA001"})
CREATE (origin:Airport {code: "LHR"})
CREATE (destination:Airport {code: "AMS"})
CREATE (flight)<-[:OUT]-(origin)
CREATE (flight)-[:IN]->(destination);

以下查询将折叠 Flight 节点,并将其替换为 APOC 和 Cypher 中的 CONNECTED to 关系

apoc.refactor.collapseNode
MATCH (flight:Flight {number: "BA001"})
CALL apoc.refactor.collapseNode([flight],'CONNECTED_TO')
YIELD input, output
RETURN input, output;
使用 Cypher
MATCH (flight:Flight {number: "BA001"})
CALL (flight) {
    MATCH p=(a)-[]-(f)-[]-(b)
    WITH p, a, f, b LIMIT 1
    CREATE (a)-[r:CONNECTED_TO]->(b)
    SET r = properties(f)
    DETACH DELETE f
    RETURN r AS newRel
}
RETURN newRel
结果
input output

10

[:CONNECTED_TO {number: "BA001"}]

如果我们执行此查询,将生成以下图

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