Neo4j 版本4中添加了很多重要的改进和新特性。我们会在接下来几个月中陆续介绍这些新特性。先从Cypher开始。
关于CALL的完整使用方法请参见:https://neo4j.com/docs/cypher-manual/current/clauses/call-subquery/ 。
1. 介绍
Cypher 版本4中增加的CALL命令允许执行子查询,即其他查询内部的查询。 子查询允许组合查询,这在使用UNION或聚合时特别有用。
子查询为每个传入的输入行评估并执行,并且该子查询可以产生任意数量的输出行。 然后,将每个输出行与输入行合并以构建子查询的结果。 这意味着子查询将影响行数。 如果子查询不返回任何行,则子查询后将没有可用的行。
对于允许哪些查询作为子查询以及它们与父查询的交互方式,存在一些限制:
- 子查询必须以RETURN子句结尾。
- 子查询仅在显式导入的情况下才引用父查询中的变量。
- 子查询不能返回与父查询中名称相同的变量。
- 从子查询返回的所有变量随后都可以在父查询中使用。
我们将用下图作为例子说明: