Rename labels, types, and properties
The APOC library contains procedures that can be used to rename labels, relationship types, and properties of nodes and relationships.
Procedures for renaming labels, types, and properties
Qualified Name | Type |
---|---|
|
Procedure |
|
Procedure |
|
Procedure |
|
Procedure |
Config parameters
As the collection of data is processed in batches using apoc.periodic.iterate
, these procedures support the following config parameters:
name | type | default | description |
---|---|---|---|
batchSize |
INTEGER |
10000 |
run the specified number of operation statements in a single tx - params: {_count, _batch} |
parallel |
BOOLEAN |
true |
run operation statements in parallel (note that statements might deadlock if conflicting) |
retries |
INTEGER |
0 |
if the operation statement fails with an error, sleep 100ms and retry until retries-count is reached - param {_retry} |
batchMode |
STRING |
"BATCH" |
how data-driven statements should be processed by operation statement. Valid values are: * "BATCH" - execute operation statement once per batchSize. Operation statement is prefixed with the following, which extracts each field returned in the data-driven statement from the |
concurrency |
INTEGER |
Number of processors available |
number of concurrent tasks are generated when using |
Examples
The below examples will further explain these procedures.
Engineer
connected by COLLEAGUES
relationships: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)
If the above query is run, it will result in the following graph:
Renaming node labels
Engineer
to DevRel
:MATCH (person:Engineer)
WHERE person.name IN ["Mark", "Jennifer", "Michael"]
WITH collect(person) AS people
CALL apoc.refactor.rename.label("Engineer", "DevRel", people)
YIELD committedOperations
RETURN committedOperations
If the above query is run, it will result in the following graph:
Renaming relationship types
COLLEAGUES
to FROLLEAGUES
:MATCH (:Engineer {name: "Jim"})-[rel]->(:Engineer {name: "Alistair"})
WITH collect(rel) AS rels
CALL apoc.refactor.rename.type("COLLEAGUES", "FROLLEAGUES", rels)
YIELD committedOperations
RETURN committedOperations
Renaming node properties
city
to location
for all nodes with the DevRel
label:MATCH (person:DevRel)
WITH collect(person) AS people
CALL apoc.refactor.rename.nodeProperty("city", "location", people)
YIELD committedOperations
RETURN committedOperations
MATCH (n)
RETURN (n)
n |
---|
(:DevRel {name: "Jennifer", location: "St Louis"}) |
(:DevRel {name: "Michael", location: "Dresden"}) |
(:Engineer {city: "London", name: "Jim"}) |
(:DevRel {name: "Mark", location: "London"}) |
(:Engineer {city: "London", name: "Alistair"}) |
Renaming relationship properties
since
to from
for all relationships:MATCH ()-[rel]->()
WITH collect(rel) AS rels
CALL apoc.refactor.rename.typeProperty("since", "from", rels)
YIELD committedOperations
RETURN committedOperations
MATCH path = ()-[]->()
RETURN path
path |
---|
[{"name":"Mark","location":"London"},{"from":"2018-02-01"},{"name":"Jennifer","location":"St Louis"}] |
[{"name":"Mark","location":"London"},{"from":"2013-05-01"},{"name":"Michael","location":"Dresden"}] |
[{"name":"Jim","city":"London"},{"from":"2006-05-01"},{"name":"Alistair","city":"London"}] |