在 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 表明,你只关心返回的顶点标签 studentnamegroup_id 属性。
  • 这可以避免返回所有的属性,减少不必要的信息,有助于提高查询的性能。

2. 使用YIELD设置字段别名

LOOKUP ON student YIELD student.name AS student_name, student.group_id AS group;
  • 在这个例子中,你不仅返回了 student.namestudent.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" 的所有顶点,并返回其 namelabels 属性。
    • 重点是 YIELD 的作用是告诉数据库只返回这两个字段,而不是返回整个顶点的所有属性。

    2. 在 MATCH 中使用 YIELD

    YIELDMATCH 子句中同样起到类似作用。
    示例:

    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,你可以定制化你的查询结果,让每次查询就只返回你关心的数据!



    NebulaGraph中YIELD关键词的作用插图

    关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

    除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

    本文链接:https://www.choupangxia.com/2025/12/12/nebulagraph-yield/