问题描述
我尝试了解在Cypher请求中使用YIELD。
例如:
CALL db.labels() YIELD label
WHERE label CONTAINS 'User'
RETURN count(label) AS numLabels
但是我不明白为什么我必须在什么时候使用它。 有人可以解释一下我的用途是什么,什么时候必须使用它?
解决方法
您应阅读CALL
和YIELD
的{{3}}。
以下是文档中的一些摘要:
大多数过程返回带有固定结果集的记录流 字段,类似于运行Cypher查询返回的流的方式 记录。
YIELD
子句用于明确选择 可用结果字段作为新绑定的变量从以下位置返回 程序调用给用户或由用户进行进一步处理 剩余的查询。因此,为了能够使用YIELD
,名称 (和类型)输出参数需要事先知道。每 产生的结果字段可以选择使用别名重命名(即 resultFieldNameAS
newName)。受过程约束的所有新变量 调用被添加到当前绑定的变量集中 范围。如果过程调用尝试重新绑定以前的版本,则是错误的 绑定变量(即,过程调用不能隐藏变量 之前已绑定到当前范围中。)
在较大的查询中,从过程调用返回的记录带有 可以使用
WHERE
子句进一步过滤明确的YIELD 后跟一个谓词(类似于WITH
…{WHERE
……)。如果被调用过程声明了至少一个结果字段,则
YIELD
可能 通常不会省略。但是,YIELD
始终可以在 独立过程调用。在这种情况下,将产生所有结果字段 作为从过程调用到用户的新绑定变量。