11.7. Foreach
Collections and paths are key concepts in Cypher.
To use them for updating data, you can use the FOREACH
construct.
It allows you to do updating commands on elements in a collection — a path, or a collection created by aggregation.
The identifier context inside of the foreach parenthesis is separate from the one outside it.
This means that if you CREATE
a node identifier inside of a FOREACH
, you will not be able to use it outside of the foreach statement, unless you match to find it.
Inside of the FOREACH
parentheses, you can do any of the updating commands — CREATE
, CREATE UNIQUE
, DELETE
, and FOREACH
.
Mark all nodes along a path
This query will set the property marked
to true on all nodes along a path.
Query.
MATCH p =(begin)-[*]->(END ) WHERE begin.name='A' AND END .name='D' FOREACH (n IN nodes(p)| SET n.marked = TRUE )
Nothing is returned from this query, but four properties are set.
Result
Properties set: 4 |
---|
|
Try this query live. create (_0 {`name`:"D"}) create (_1 {`name`:"A"}) create (_2 {`name`:"B"}) create (_3 {`name`:"C"}) create _1-[:`KNOWS`]->_2 create _2-[:`KNOWS`]->_3 create _3-[:`KNOWS`]->_0 match p = (begin)-[*]->(end) where begin.name='A' and end.name='D' foreach(n in nodes(p) | set n.marked = true)