apoc.refactor.rename.type过程Cypher 25 中已弃用
语法 |
|
||
描述 |
将所有类型为 |
||
输入参数 |
名称 |
类型 |
描述 |
|
|
要重命名的类型。 |
|
|
|
关系的新类型。 |
|
|
|
要应用新名称的关系。如果此列表为空,则所有具有旧类型的关系都将被重命名。默认值为: |
|
|
|
|
|
返回参数 |
名称 |
类型 |
描述 |
|
|
操作运行的批次数。 |
|
|
|
执行重命名的总数。 |
|
|
|
完成操作所花费的时间。 |
|
|
|
已提交操作的总数。 |
|
|
|
失败操作的总数。 |
|
|
|
失败批次的总数。 |
|
|
|
重试的总次数。 |
|
|
|
收集的错误消息。 |
|
|
|
|
|
|
|
|
|
|
|
与给定标签或类型关联的约束。 |
|
|
|
与给定标签或类型关联的索引。 |
|
使用 Cypher 重构节点
在 Cypher 中,无需使用 APOC 即可动态引用节点标签和关系类型。
CREATE (n1:$(label))-[r:$(type)]->(n2:$(label))
MERGE (n1:$(label))-[r:$(type)]->(n2:$(label))
MATCH (n1:$(label))-[r:$(type)]->(n2:$(label))
动态计算出的类型必须求值为 STRING 或 LIST<STRING>。更多信息,请参阅 Cypher 手册 → CREATE、MERGE、MATCH。
使用 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
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
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 |
此查询运行后,我们将得到以下图表
|
此过程并不会直接重命名关系类型;它会创建一个具有新类型的新关系,并从原始关系中复制属性,随后删除原始关系。 |