3.3.12 FOREACH语句
FOREACH语句用于更新列表中的数据,或者来自路径的组件,或者来自聚合的结果。
列表和路径是Cypher中的关键概念,可以使用FOREACH来更新其中的数据。它可以在路径或者聚合的列表的每个元素上执行更新命令。FOREACH括号中的变量是与外部分开的,这意味着FOREACH中创建的变量不能用于该语句之外。
在FOREACH括号内,可以执行任何的更新命令,包括CREATE、CREATE UNIQUE、DELETE和FOREACH。如果希望对列表中的每个元素执行额外的MATCH命令,则使用UNWIND命令更合适。FOREACH图例如图3-15所示。

图3-15 FOREACH图例
3.3.12.1 标记路径上的所有节点
这个查询将设置路径上所有节点的marked属性为true值。
查询:

本查询无返回,但设置了4个属性。
结果:

3.3.12.2 从列表中创建朋友
下面的查询将列表中的人全部加为A的朋友。

本查询无返回,但创建了三个节点,每个节点添加了标签Person和设置了name属性,并将这三个节点与A之间建立FRIEND关系。