apoc.refactor.extractNode
Procedure
apoc.refactor.extractNode(rels ANY, labels LIST<STRING>, outType STRING, inType STRING)
- expands the given RELATIONSHIP
VALUES into intermediate NODE
VALUES.
The intermediate NODE
values are connected by the given outType
and inType
.
Signature
apoc.refactor.extractNode(relationships :: ANY, labels :: LIST<STRING>, outType :: STRING, inType :: STRING) :: (input :: INTEGER, output :: NODE, error :: STRING)
Input parameters
Name | Type | Default | Description |
---|---|---|---|
rels |
ANY |
null |
|
labels |
LIST<STRING> |
null |
The labels to be added to the new |
outType |
STRING |
null |
The type of the |
inType |
STRING |
null |
The type of the |
Usage Examples
The examples in this section are based on the following sample graph:
CREATE (origin:Airport {code: "LHR"})
CREATE (destination:Airport {code: "AMS"})
CREATE (origin)-[:FLIGHT {number: "BA001"}]->(destination);
The following creates a Flight
node with an IN
relationship from LHR
and an OUT
relationship to AMS
:
MATCH (:Airport)-[rel:FLIGHT]->(:Airport)
WITH collect(rel) AS rels
CALL apoc.refactor.extractNode(rels,['Flight'],'OUT','IN')
YIELD input, output
RETURN input, output;
input | output |
---|---|
0 |
(:Flight {number: "BA001"}) |
We can list all the Flight
nodes by running the following query:
MATCH path = (origin)-[:IN]->(:Flight)-[:OUT]->(destination)
RETURN path;
path |
---|
(:Airport {code: "LHR"})-[:IN]→(:Flight {number: "BA001"})-[:OUT]→(:Airport {code: "AMS"}) |