apoc.refactor.rename.label

此过程已弃用。请改用 Cypher 的 SETREMOVE 子句。

详细信息

语法

apoc.refactor.rename.label(oldLabel, newLabel [, nodes ]) :: (batches, total, timeTaken, committedOperations, failedOperations, failedBatches, retries, errorMessages, batch, operations, constraints, indexes)

描述

将所有 NODE 值中指定的 oldLabel 重命名为 newLabel。如果提供了 LIST<NODE>,则仅对该 LIST<NODE> 内的 NODE 值进行重命名。

输入参数

名称

类型

描述

oldLabel

STRING

要重命名的标签。

newLabel

STRING

标签的新名称。

节点

LIST<NODE>

应用新名称的节点。如果此列表为空,则所有具有旧标签的节点都将被重命名。默认值为:[]

返回参数

名称

类型

描述

batches

INTEGER(整数)

操作运行的批次数。

总计

INTEGER(整数)

执行重命名的总数。

耗时

INTEGER(整数)

完成操作所花费的时间。

已提交的操作

INTEGER(整数)

已提交操作的总数。

failedOperations

INTEGER(整数)

失败操作的总数。

failedBatches

INTEGER(整数)

失败批次的总数。

retries

INTEGER(整数)

重试的总次数。

errorMessages

MAP

收集的错误消息。

batch

MAP

{ total :: INTEGER, failed :: INTEGER, committed :: INTEGER, errors :: MAP }

操作

MAP

{ total :: INTEGER, failed :: INTEGER, committed :: INTEGER, errors :: MAP }

constraints

LIST<STRING>

与给定标签或类型关联的约束。

indexes

LIST<STRING>

与给定标签或类型关联的索引。

使用 Cypher 设置和移除标签

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

动态设置标签的 Cypher 语法
SET n:$(label)
REMOVE n:$(label)

动态计算的标签必须求值为 STRINGLIST<STRING>。有关更多信息,请参阅《Cypher 手册》→ 动态设置标签 以及 动态移除标签

使用示例

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

CREATE (mark:Engineer {name: "Mark", city: "London"})
CREATE (jennifer:Engineer {name: "Jennifer", city: "St Louis"})
CREATE (michael:Engineer {name: "Michael", city: "Dresden"})
CREATE (jim:Engineer {name: "Jim", city: "London"})
CREATE (alistair:Engineer {name: "Alistair", city: "London"})

MERGE (jim)-[:COLLEAGUES {since: date("2006-05-01")}]->(alistair)
MERGE (mark)-[:COLLEAGUES {since: date("2018-02-01")}]->(jennifer)
MERGE (mark)-[:COLLEAGUES {since: date("2013-05-01")}]->(michael);

以下示例展示了如何同时使用 APOC 和 Cypher 将 Mark、Jennifer 和 Michael 的标签从 Engineer 更改为 DevRel

apoc.refactor.rename.label
MATCH (person:Engineer)
WHERE person.name IN ["Mark", "Jennifer", "Michael"]
WITH collect(person) AS people
CALL apoc.refactor.rename.label("Engineer", "DevRel", people)
YIELD total
RETURN total
使用 Cypher
MATCH (person:Engineer)
WHERE person.name IN ["Mark", "Jennifer", "Michael"]
SET person:DevRel
REMOVE person:Engineer
RETURN count(*) AS total
结果
总计

3

该查询运行后,我们将获得以下图形

apoc.rename update node labels