NebulaGraph中YIELD关键词的作用
在 NebulaGraph 的语法中,YIELD 是一个 关键字,它用于指定查询结果中需要返回哪些属性或字段。简单来说,YIELD的作用是在查询中明确指出要返回的数据内容。
YIELD的含义:
YIELD 的主要功能是选择需要返回的字段或属性,帮助用户对查询结果进行筛选和管理。
在 NebulaGraph 的查询中,一个顶点(vertex)或者边(edge)可以拥有多个属性,但是有些场景下你可能只需要返回某些属性,而不是返回整个顶点或整条边。YIELD 提供了这种灵活性,它允许用户定义返回的字段是什么以及是否为其设置别名。
例如,下面是一些示例:
1. 使用YIELD返回具体的属性字段
LOOKUP ON student YIELD student.name, student.group_id;
- 这里的
YIELD student.name, student.group_id表明,你只关心返回的顶点标签student的name和group_id属性。 - 这可以避免返回所有的属性,减少不必要的信息,有助于提高查询的性能。
2. 使用YIELD设置字段别名
LOOKUP ON student YIELD student.name AS student_name, student.group_id AS group;
- 在这个例子中,你不仅返回了
student.name和student.group_id,还通过使用AS为这些字段设置了别名。 - 查询结果可能是这样的(假设我们有对应的数据):
其他使用场景中的YIELD
NebulaGraph的查询支持在多个地方使用 YIELD 关键字。这里列举几个常见场景:
1. 在 LOOKUP 中使用 YIELD
通过 LOOKUP 进行数据查找时,YIELD 允许用户指定返回结果中所需要的属性。
LOOKUP ON student WHERE student.group_id == "group_1" YIELD student.name, student.labels;
- 上面的语句会在
student标签中查找group_id等于"group_1"的所有顶点,并返回其name和labels属性。 - 重点是
YIELD的作用是告诉数据库只返回这两个字段,而不是返回整个顶点的所有属性。
2. 在 MATCH 中使用 YIELD
YIELD 在 MATCH 子句中同样起到类似作用。
示例:
MATCH (s:student {group_id: "group_1"}) RETURN s.name AS student_name, s.labels AS interests;
- 在
MATCH中,其含义与LOOKUP中类似,用来指定需要返回的字段,并允许设置别名。 - 返回查询的字段改为设置后的别名,而不是字段原始的名字。
3. 在 PIPE 中使用 YIELD
在 NebulaGraph 中,查询可以使用 管道(PIPE)操作符将多个子查询连接起来。在后续的查询中,会用到 YIELD 来指定前一个查询结果中需要读取的字段。
示例:
MATCH (s:student) WHERE s.group_id == "group_1" RETURN s.uuid AS student_id | YIELD student_id;
- 在这个例子中:
- 第一个查询
MATCH返回结果中,只选择了s.uuid这个字段,并命名为student_id。 - 第二个
YIELD从前一步的结果中提取了student_id。
- 第一个查询
这在查询包含多个计算步骤时非常有用,允许你只传递所需的数据字段到下一步。
4. 在 GO 中使用 YIELD
在邻居查询或者图遍历操作 GO 中,YIELD 是必须的,它决定了从操作中返回哪些内容。
示例:
GO FROM "123" OVER follow YIELD follow._dst AS friend_id, follow.weight AS relationship_weight;
- 这里的
YIELD follow._dst AS friend_id, follow.weight AS relationship_weight指定:- 从标签为
follow的边中,取出目标顶点(用friend_id表示)。 - 返回边的权重(用
relationship_weight表示)。
- 从标签为
YIELD 通过这种方式,允许我们从路径查询中精确提取出目标需要的数据。
总结
- 简单来说,
YIELD就是用来控制 查询返回的字段和数据内容,类似于 SQL 中的SELECT子句。 - 它允许选择部分字段、设置别名、精简返回内容,从而提高查询性能,更加方便结果的解析与使用。
通过正确地使用 YIELD,你可以定制化你的查询结果,让每次查询就只返回你关心的数据!

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接
本文链接:https://www.choupangxia.com/2025/12/12/nebulagraph-yield/