apoc.refactor.cloneNodes

Procedure APOC Core

apoc.refactor.cloneNodes([node1,node2,…​]) clone nodes with their labels and properties

Signature

apoc.refactor.cloneNodes(nodes :: LIST? OF NODE?, withRelationships = false :: BOOLEAN?, skipProperties = [] :: LIST? OF STRING?) :: (input :: INTEGER?, output :: NODE?, error :: STRING?)

Input parameters

Name Type Default

nodes

LIST? OF NODE?

null

withRelationships

BOOLEAN?

false

skipProperties

LIST? OF STRING?

[]

Output parameters

Name Type

input

INTEGER?

output

NODE?

error

STRING?

Usage Examples

The examples in this section are based on the following sample graph:

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

The following creates copies of all Person nodes:

MATCH (p:Person)
WITH collect(p) AS people
CALL apoc.refactor.cloneNodes(people)
YIELD input, output
RETURN input, output;
Table 1. Results
input output

4

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

5

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

We can list all the Person nodes by running the following query:

MATCH (p:Person)
RETURN p;
Table 2. Results
p

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

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

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

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