密码:YIELD有什么用?

问题描述

我尝试了解在Cypher请求中使用YIELD。

例如:

CALL db.labels() YIELD label
WHERE label CONTAINS 'User'
RETURN count(label) AS numLabels

但是我不明白为什么我必须在什么时候使用它。 有人可以解释一下我的用途是什么,什么时候必须使用它?

解决方法

您应阅读CALLYIELD的{​​{3}}。

以下是文档中的一些摘要:

大多数过程返回带有固定结果集的记录流 字段,类似于运行Cypher查询返回的流的方式 记录。 YIELD子句用于明确选择 可用结果字段作为新绑定的变量从以下位置返回 程序调用给用户或由用户进行进一步处理 剩余的查询。因此,为了能够使用YIELD,名称 (和类型)输出参数需要事先知道。每 产生的结果字段可以选择使用别名重命名(即 resultFieldName AS newName)。受过程约束的所有新变量 调用被添加到当前绑定的变量集中 范围。如果过程调用尝试重新绑定以前的版本,则是错误的 绑定变量(即,过程调用不能隐藏变量 之前已绑定到当前范围中。)

在较大的查询中,从过程调用返回的记录带有 可以使用WHERE子句进一步过滤明确的YIELD 后跟一个谓词(类似于WITH…{WHERE……)。

如果被调用过程声明了至少一个结果字段,则YIELD可能 通常不会省略。但是,YIELD始终可以在 独立过程调用。在这种情况下,将产生所有结果字段 作为从过程调用到用户的新绑定变量。