精通Neo4j
上QQ阅读APP看书,第一时间看更新

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关系。