neo4j--Cypher语法练习(WITH、 FOREACH、Aggregation、UNWIND、UNION、CALL)

1.15 WITH

WITH语句将分段的查询部分连接在一起,查询结果从一部分以管道形式传递给另外一部分作为开始点。

使用WITH可以在将结果传递到后续查询之前对结果进行操作。操作可以是改变结果的形式或者数量。WITH的一个常见用法就是限制传递给其他MATCH语句的结果数。通过结合ORDER BY和LIMIT,可获取排在前面的X个结果。

1.15.1  过滤聚合函数结果

      聚合的结果必须要通过WITH语句传递才能进行过滤。

MATCH (david { name: 'Tom Hanks' })--()--(otherPerson)

WITH otherPerson, count(*) AS foaf

WHERE foaf > 1

RETURN otherPerson

1.15.2 在collect前对结果排序

可以在将结果传递给collect函数之前对结果进行排序,这样就可以返回排过序的列表。

MATCH (n)

WITH n

ORDER BY n.name DESC LIMIT 3

RETURN collect(n.name)

1.15.3 限制路径搜索的分支

可以限制匹配路径的数量,然后以这些路径为基础再做任何类似的有限制条件的搜索。

MATCH (n { name: 'Tom Hanks' })--(m)

WITH m

ORDER BY m.name DESC LIMIT 1

MATCH (m)--(o)

RETURN o.name

1.16 FOREACH

FOREACH语句用于循环遍历结果集列表,然后做一些操作。

列表(lists)和路径(paths)是Cypher中的关键概念。可以使用FOREACH来更新其中的数据。它可以在路径或者聚合的列表的每个元素上执行更新命令。FOREACH括号中的变量是与外部分开的,这意味着FOREACH中创建的变量不能用于该语句之外。

在FOREACH括号内,可以执行任何的更新命令,包括CREATE,CREATE UNIQUE,DELETE和FOREACH。如果希望对列表中的每个元素执行额外的MATCH命令,使用UNWIND命令更合适。

1.16.1 标记路径上的所有节点

这个查询将设置路径上所有节点的marked属性为true值。

MATCH p = (root { name: 'root' })-[r]-(A)

FOREACH (n IN nodes(p)| SET n.marked = <

  • 3
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值