15.22. Foreach

15.22.1. Mark all nodes along a path

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, i.e. 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 updating commands — CREATE, CREATE UNIQUE, DELETE, and FOREACH.

15.22.1. Mark all nodes along a path

This query will set the property marked to true on all nodes along a path.

Query

START begin = node(2), end = node(1)
MATCH p = begin -[*]-> end foreach(n in nodes(p) :
SET n.marked = true)

Nothing is returned from this query.

Result

Properties set: 4
4 ms

(empty result)


Try this query live. (1) {"marked":true,"name":"D"} (2) {"marked":true,"name":"A"} (3) {"marked":true,"name":"B"} (4) {"marked":true,"name":"C"} (2)-[:KNOWS]->(3) {} (3)-[:KNOWS]->(4) {} (4)-[:KNOWS]->(1) {} start begin = node(2), end = node(1) match p = begin -[*]-> end foreach(n in nodes(p) : set n.marked = true)