Neo4j笔记(二)Cypher(6)UNWIND和FOREACH

unwind是cypher提供的一种列表遍历工具,类似于python中的for循环,unwind结合case等语法可以写出许多复杂的查询,尤其是对于路径查询的处理。foreach也是cypher提供的一个列表遍历工具,但是主要用来做增删改。对于这两个的用法,建议结合列表推导一起学习。

一、UNWIND

官方文档对于UNWIND的说明:With UNWIND, you can transform any list back into individual rows. 注意两点,list和individual rows,说明输入只要是列表就行,输出是每一个元素。用法如下:

可以看到,依次返回了每一个元素。

1、列表去重

WITH [1, 1, 2, 2] AS coll
UNWIND coll AS x
WITH DISTINCT x
RETURN x

2、遍历多个列表

WITH [1, 2] AS a,[3, 4] AS b
UNWIND (a + b) AS x
RETURN x

3、unwind嵌套

WITH [[1, 2],[3, 4], 5] AS nested
UNWIND nested AS x
UNWIND x AS y
RETURN y

4、空列表

UNWIND [] AS x
RETURN x

不返回任何东西,注意不是返回null。

5、路径遍历

match p=(n:Person{name:"p1"})-[*1..5]-(m)
unwind nodes(p) as x
return x

二、FOREACH

foreach是cypher提供的列表更新工具,官方文档说明:The FOREACH clause is used to update data within a list, whether components of a path, or result of aggregation. 注意两点,update和list。在foreach中,可以执行CREATECREATE UNIQUEMERGEDELETE,等更新语法,还可做foreach嵌套。

1、设置路径节点属性

MATCH p =(begin)-[*]->(END )
WHERE begin.name = 'A' AND END .name = 'D'
FOREACH (n IN nodes(p)| SET n.marked = TRUE )

 

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值