apoc.refactor.cloneNodes

Procedure

apoc.refactor.cloneNodes(nodes LIST<NODE>, withRelationships BOOLEAN, skipProperties LIST<STRING>) - clones the given NODE values with their labels and properties. It is possible to skip any NODE properties using skipProperties (note: this only skips properties on NODE values and not their RELATIONSHIP values).

Signature

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

Input parameters

Name Type Default

nodes

LIST<NODE>

null

withRelationships

BOOLEAN

false

skipProperties

LIST<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"})