apoc.refactor.cloneNodes

详细信息

语法

apoc.refactor.cloneNodes(nodes [, withRelationships, skipProperties ]) :: (input, output, error)

描述

克隆给定的 NODE(节点)值及其标签和属性。可以使用 skipProperties 跳过任何 NODE 属性(注意:这仅跳过 NODE 值上的属性,而不跳过其 RELATIONSHIP 值上的属性)。

输入参数

名称

类型

描述

节点

LIST<NODE>

要克隆的节点。

withRelationships

布尔值 (BOOLEAN)

是否同时克隆连接的关系。默认值为:false

skipProperties

LIST<STRING>

克隆时是否跳过节点属性。默认值为:[]

返回参数

名称

类型

描述

input

INTEGER(整数)

原始实体的内部 ID。

输出

NODE

复制后的实体。

错误 (error)

STRING

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

使用 Cypher 重构节点

无需使用 APOC,即可在 Cypher 中动态引用节点标签。

用于动态创建、匹配和合并标签的 Cypher 语法
CREATE (n1:$(label))
MERGE (n1:$(label))
MATCH (n1:$(label))

动态计算出的标签必须求值为 STRINGLIST<STRING>。有关更多信息,请参阅 Cypher 手册 → CREATEMERGEMATCH

用法示例

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

CREATE (mark:Person {name: "Mark", city: "London"})
CREATE (jennifer:Person {name: "Jennifer", city: "St Louis"})

以下示例展示了如何同时使用 APOC 和 Cypher 来创建所有 Person 节点的副本

apoc.refactor.cloneNodes
MATCH (p:Person)
WITH collect(p) AS people
CALL apoc.refactor.cloneNodes(people)
YIELD input
MATCH (p:Person)
RETURN DISTINCT p
使用 Cypher 的动态标签
MATCH (p:Person)
CREATE (n:$(labels(p)))
SET n = properties(p)
WITH *
MATCH (p:Person)
RETURN DISTINCT p
结果
p

(:Person {name: "Mark", city: "London"})

(:Person {name: "Jennifer", city: "St Louis"})

(:Person {name: "Mark", city: "London"})

(:Person {name: "Jennifer", city: "St Louis"})