apoc.refactor.rename.type

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

详细信息

语法

apoc.refactor.rename.type(oldType, newType [, rels, config ]) :: (batches, total, timeTaken, committedOperations, failedOperations, failedBatches, retries, errorMessages, batch, operations, constraints, indexes)

描述

将所有类型为 oldTypeRELATIONSHIP 值重命名为 newType。如果提供了 LIST<RELATIONSHIP>,则重命名仅应用于该 LIST<RELATIONSHIP> 中的 RELATIONSHIP 值。

输入参数

名称

类型

描述

oldType

STRING

要重命名的类型。

newType

STRING

关系的新类型。

rels

LIST<RELATIONSHIP>

要应用新名称的关系。如果此列表为空,则所有具有旧类型的关系都将被重命名。默认值为:[]

config

MAP

{ batchSize = 100000 :: INTEGER, concurrency :: INTEGER, retries = 0 :: INTEGER, parallel = true :: BOOLEAN, batchMode = "BATCH" :: STRING }。默认值为:{}

返回参数

名称

类型

描述

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 语法
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 (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);

以下内容将 Jim 和 Alistair 之间的关系类型从 COLLEAGUES 更改为 FROLLEAGUES

apoc.refactor.rename.type
MATCH (:Engineer {name: "Jim"})-[rel]->(:Engineer {name: "Alistair"})
WITH collect(rel) AS rels
CALL apoc.refactor.rename.type("COLLEAGUES", "FROLLEAGUES", rels)
YIELD batches
RETURN count(*) AS count
使用 Cypher
MATCH (a:Engineer {name: "Jim"})-[rel:COLLEAGUES]->(b:Engineer {name: "Alistair"})
MERGE (a)-[r:FROLLEAGUES]->(b)
SET r = properties(rel)
WITH rel, r
DELETE rel
RETURN count(*) AS count
结果
count

1

此查询运行后,我们将得到以下图表

apoc.rename rename rel type

此过程并不会直接重命名关系类型;它会创建一个具有新类型的新关系,并从原始关系中复制属性,随后删除原始关系。

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