Fetch 语法

FETCH 语句用于获取点和边的属性。

获取点属性

FETCH PROP ON 可返回点的一系列属性,目前已支持一条语句返回多个点属性。FETCH 获取点属性支持与管道用户自定义变量一起使用。

  1. FETCH PROP ON {<tag_name> | <tag_name_list> | *} <vertex_id_list> [YIELD [DISTINCT] <return_list>]

FETCH <tag_name_list> 操作仅适用于 1.0.1 版本或更高版本。如果您使用的 Nebula Graph 版本早于 1.0.1,则在一次 FETCH 查询中只能获取一种类型点的属性。

* 返回指定 VID 点的所有属性。

<tag_name_list>::=[tag_name [, tag_name]] 为标签名称,与 return_list 中的标签相同。

<vertex_id_list>::=[vertex_id [, vertex_id]] 是一组用 “,” 分隔开的点 VID 列表。

[YIELD [DISTINCT] <return_list>] 为返回的属性列表,YIELD 语法参看 YIELD Syntax

示例

  1. -- 返回点 100 的所有属性。
  2. nebula> FETCH PROP ON * 100;
  3. -- 返回点100102 playerteam tag 上的所有属性。
  4. nebula> FETCH PROP ON * 100, 102;
  5. -- 返回点 100201 的所有属性。
  6. nebula> FETCH PROP ON player, team 100, 201;
  7. -- 如未指定 YIELD 字段,则返回点 100, tag player 的所有属性。
  8. nebula> FETCH PROP ON player 100;
  9. -- 返回点 100 的姓名与年龄属性。
  10. nebula> FETCH PROP ON player 100 YIELD player.name, player.age;
  11. -- 通过 hash 生成 int64 ID,返回其姓名和年龄属性。
  12. nebula> FETCH PROP ON player hash("nebula") YIELD player.name, player.age;
  13. -- 支持与管道一起使用
  14. nebula> YIELD 100 AS id | FETCH PROP ON player $-.id;
  15. -- 沿边 follow 寻找点 100 的所有近邻,返回其姓名和年龄属性。
  16. nebula> GO FROM 100 OVER follow YIELD follow._dst AS id | FETCH PROP ON player $-.id YIELD player.name, player.age;
  17. -- 与上述语法相同。
  18. nebula> $var = GO FROM 100 OVER follow YIELD follow._dst AS id; FETCH PROP ON player $var.id YIELD player.name, player.age;
  19. -- 获取 100101102 三个点,返回姓名和年龄都不相同的记录。
  20. nebula> FETCH PROP ON player 100,101,102 YIELD DISTINCT player.name, player.age;

获取边属性

使用 FETCH 获取边属性的用法与点属性大致相同,且可同时获取相同类型多条边的属性。

  1. FETCH PROP ON <edge_type> <vid> -> <vid>[@<rank>] [, <vid> -> <vid> ...] [YIELD [DISTINCT] <return_list>]

<edge_type> 指定边的类型,需与 <return_list> 相同。

<vid> -> <vid> 从起始点到终止点,多条边需使用逗号隔开。

<rank> 指定相同类型边 rank,可选。如未指定,则默认返回 rank 为 0 的边。

[YIELD [DISTINCT] <return_list>] 为返回的属性列表。

获取边属性示例

  1. -- 本语句未指定 YIELD,因此获取从点 100 到点 200 serve 的所有属性。
  2. nebula> FETCH PROP ON serve 100 -> 200;
  3. -- 仅返回属性 start_year
  4. nebula> FETCH PROP ON serve 100 -> 200 YIELD serve.start_year;
  5. -- 获取点 100 出边 follow degree 属性。
  6. nebula> GO FROM 100 OVER follow YIELD follow.degree;
  7. -- 同上述语句。
  8. nebula> GO FROM 100 OVER follow YIELD follow._src AS s, serve._dst AS d \
  9. | FETCH PROP ON follow $-.s -> $-.d YIELD follow.degree;
  10. -- 同上述语句。
  11. nebula> $var = GO FROM 100 OVER follow YIELD follow._src AS s, follow._dst AS d;\
  12. FETCH PROP ON follow $var.s -> $var.d YIELD follow.degree;