修改密码

请输入密码
请输入密码 请输入8-64长度密码 和 email 地址不相同 至少包括数字、大写字母、小写字母、半角符号中的 3 个
请输入密码
提交

修改昵称

当前昵称:
提交

申请证书

证书详情

Please complete this required field.

  • Ultipa Graph V4

Standalone

Please complete this required field.

Please complete this required field.

服务器的MAC地址

Please complete this required field.

Please complete this required field.

取消
申请
ID
产品
状态
核数
申请天数
审批时间
过期时间
MAC地址
申请理由
审核信息
关闭
基础信息
  • 用户昵称:
  • 手机号:
  • 公司名称:
  • 公司邮箱:
  • 地区:
  • 语言:
修改密码
申请证书

当前未申请证书.

申请证书
Certificate Issued at Valid until Serial No. File
Serial No. Valid until File

Not having one? Apply now! >>>

ProductName CreateTime ID Price File
ProductName CreateTime ID Price File

No Invoice

v5.0
搜索
    v5.0

      RETURN

      概述

      使用语句RETURN可以指定需包含在最终输出中的项。各项由一个表达式定义,可以包括别名、属性、函数、常量等。

      所有UQL查询,除图集管理、数据修改和其他特定用途的查询外,必须以RETURN语句结尾。只有LIMIT语句可以跟在RETURN语句之后,为各返回项保留指定数量的记录,并舍弃其余记录。

      语法

      RETURN <item1> as <alias1?>, <item2?> as <alias2?>, ...
      

      详情

      • RETURN语句必须包含至少一个项目。
      • 各返回项的默认别名是返回项表达式本身。可使用别名重命名返回项。
      • 在每个返回项表达式中,可以引用前面的语句中声明的别名。更多细节请参阅在RETURN中引用别名
      • 每个返回项对应以下结果类型的一种:
        • RESULT_TYPE_NODE
        • RESULT_TYPE_EDGE
        • RESULT_TYPE_PATH
        • RESULT_TYPE_ATTR
        • RESULT_TYPE_TABLE

      示例图集

      在一个空图集中,逐行运行以下语句,创建示例图集:

      create().node_schema("Student").node_schema("Course").edge_schema("Take")
      create().node_property(@Student,"name").node_property(@Student,"gender").node_property(@Course,"name").node_property(@Course,"credit",int32).edge_property(@Take, "year", int32).edge_property(@Take, "term")
      insert().into(@Student).nodes([{_id:"s1", name:"Alex", gender:"male"}, {_id:"s2", name:"Susan", gender:"female"}])
      insert().into(@Course).nodes([{_id:"c1", name:"Art", credit:13}, {_id:"c2", name:"Literature", credit:15}])
      insert().into(@Take).edges([{_from:"s1", _to:"c1", year: 2024, term: "Spring"}, {_from:"s2", _to:"c1", year: 2023, term: "Fall"}, {_from:"s2", _to:"c2", year: 2023, term: "Spring"}])
      

      返回点

      返回每个点的schema和所有属性:

      find().nodes({@Course}) as n
      return n{*} 
      

      结果:n

      _id _uuid schema
      values
      c1 Sys-gen Course {name: "Art", credit: 13}
      c2 Sys-gen Course {name: "Literature", credit: 15}

      返回每个点的schema和系统属性:

      find().nodes({@Course}) as n
      return n
      

      结果:n

      _id _uuid schema
      c1 Sys-gen Course
      c2 Sys-gen Course

      返回边

      返回每条边的schema和所有属性:

      find().edges() as e
      return e{*}
      

      结果:e

      _uuid
      _from
      _to
      _from_uuid
      _to_uuid
      schema
      values
      Sys-gen s2 c1 UUID of s2 UUID of c1 Take {year: 2023, term: "Fall"}
      Sys-gen s2 c2 UUID of s2 UUID of c2 Take {year: 2023, term: "Spring"}
      Sys-gen s1 c1 UUID of s1 UUID of c1 Take {year: 2024, term: "Spring"}

      返回每条边的schema和所有系统属性:

      find().edges() as e
      return e
      

      结果:e

      _uuid _from _to _from_uuid _to_uuid schema
      Sys-gen s2 c1 UUID of s2 UUID of c1 Take
      Sys-gen s2 c2 UUID of s2 UUID of c2 Take
      Sys-gen s1 c1 UUID of s1 UUID of c1 Take

      返回路径

      返回每条路径中的点和边(包括点和边的schema和属性信息),以及路径长度:

      n().re({@Take.term == "Spring"}).n() as p
      return p{*}
      

      结果:

      返回每条路径中的点和边(包括点和边的schema和系统属性信息),以及路径长度:

      n().re({@Take.term == "Spring"}).n() as p
      return p
      

      结果:

      返回schema

      n({_id == "s2"}).e(as e).n(as n)
      return e.@, n.@
      

      结果:

      e.@ n.@
      Take Course
      Take Course

      返回属性

      使用英文句号.,可以从代表点或边的别名中提取指定属性值。如果未发现点或边的指定属性,则返回null值。

      n({@Student.name == "Susan"}).re().n({@Course} as c)
      return c.name, c.credit, c.type
      

      结果:

      c.name c.credit c.type
      Literature 15 null
      Art 13 null

      可使用一组花括号{}从点、边或路径中提取多个属性信息。更多信息请参阅在RETURN中引用别名

      n({@Student.name == "Susan"}).re().n({@Course} as c)
      return c{name, credit}
      

      结果:c

      _id _uuid name credit
      c1 Sys-gen Literature 15
      c2 Sys-gen Art 13

      返回表

      可使用table()函数,指定返回项作为列,构建输出表。

      n({@Student} as s).re().n({@Course} as c)
      return table(s.name, c.name)
      

      结果:

      s.name c.name
      Susan Art
      Susan Literature
      Alex Art

      返回各项别名

      n({@Student} as s).re(as t).n({@Course} as c)
      return s.name as Student, c.name as Course, t.year as TakenIn
      

      结果:

      Student Course TakenIn
      Alex Art 2024
      Susan Art 2023
      Susan Literature 2023

      返回去重记录

      可使用DISTINCT运算符对记录去重。

      n().e(as e).n()
      return distinct e.year
      

      结果:

      e.year
      2023
      2024

      返回聚合结果

      聚合函数,如sum()max(),可以直接应用于RETURN语句。

      n({@Student.name == "Susan"}).re().n({@Course} as c)
      return sum(c.credit)
      

      结果:

      sum(c.credit)
      28

      根据CASE返回结果

      CASE函数可以直接应用于RETURN语句。

      n({@Course} as n)
      return n.name as Course, case when n.credit > 14 then "Y" else "N" end as Recommended
      

      结果:

      Course Recommended
      Art N
      Literature Y

      返回指定条记录

      可使用LIMIT语句限制返回的记录条数:

      find().nodes({@Course}) as n
      return n.name limit 1
      

      结果:

      n.name
      Art

      返回有序记录

      可使用ORDER BY语句,根据指定值对记录排序。查询中,ORDER BY必须出现在RETURN statement之前。

      n({@Course} as n)
      order by n.credit desc
      return n{*}
      

      结果:n

      _id _uuid schema
      values
      c2 Sys-gen Course {name: "Literature", credit: 15}
      c1 Sys-gen Course {name: "Art", credit: 13}

      返回异源数据

      如果RETURN语句中引用的别名是异源的,则会生成笛卡尔积。更多详情请参阅异源数据

      find().nodes({@Course}) as c
      find().nodes({@Student}) as s
      return c.name, s.name
      

      结果:

      c.name s.name
      Literature Susan
      Literature Alex
      Art Susan
      Art Alex

      在RETURN中引用别名

      NODE类型

      find().nodes({@city}) as n
      return n
      

      别名nNODE类型,以下示例为RETURN语句引用别名时的情况:

      引用格式
      每条记录返回的数据
      结果类型
      n 点schema和系统属性(_id_uuid RESULT_TYPE_NODE
      n{*} 点schema和所有属性 RESULT_TYPE_NODE
      n.name 点属性name RESULT_TYPE_ATTR
      n{name, age} 点schema,系统属性和属性nameage RESULT_TYPE_NODE
      n.@ 点schema RESULT_TYPE_ATTR

      EDGE类型

      find().edges({@transfers}) as e
      return e
      

      别名eEDGE类型,以下示例为RETURN语句引用别名时的情况:

      引用格式
      每条记录返回的数据
      结果类型
      e 边schema和系统属性(_uuid_from_to_from_uuid_to_uuid RESULT_TYPE_EDGE
      e{*} 边schema和所有属性 RESULT_TYPE_EDGE
      e.time 边属性time RESULT_TYPE_ATTR
      e{time, amount} Edge schema, system properties, and properties time, amount. RESULT_TYPE_EDGE
      e.@ Edge schema. RESULT_TYPE_ATTR

      PATH类型

      n().e()[:5].n() as p
      return p
      

      别名pPATH类型,以下示例为RETURN语句引用别名时的情况:

      引用格式
      每条记录返回的数据
      结果类型
      p 路径中的点和边(包括点和边的schema和系统属性),以及路径长度 RESULT_TYPE_PATH
      p{*} 路径中的点和边(包括点和边的schema和所有属性),以及路径长度 RESULT_TYPE_PATH
      p{name}{time, amount} 路径中的点和边(包括每个点的schema、系统属性和属性name;包括每条边的schema、系统属性、属性time和属性amount),以及路径长度 RESULT_TYPE_PATH
      p{*}{time, amount} 路径中的点和边(包括每个点的schema和所有属性;包括每条边的schema、系统属性、属性time和属性amount),以及路径长度 RESULT_TYPE_PATH
      p{name}{*} 路径中的点和边(包括每个点的schema、系统属性和属性name;包括每条边的schema和所有属性),以及路径长度 RESULT_TYPE_PATH
      p{name} 路径中的点和边(包括点和边的schema、系统属性和属性name),以及路径长度 RESULT_TYPE_PATH

      List类型

      uncollect [[1,2,3,4,5], [4,5,6,7,8]] as lists
      return lists
      

      别名lists代表的每条记录都是list类型,以下示例为RETURN语句引用别名时的情况:

      引用格式
      每条记录返回的数据
      结果类型
      lists 一个列表 RESULT_TYPE_ATTR
      lists[2] 列表中的第3个元素 与元素类型一致;本例中为RESULT_TYPE_ATTR
      lists[0:3] 由原列表第1个到第4个元素构成的新列表 RESULT_TYPE_ATTR
      lists[:5] 由原列表第1个到第6个元素构成的新列表 RESULT_TYPE_ATTR
      lists[2:] 由原列表第3个元素到结尾构成的新列表 RESULT_TYPE_ATTR

      Point类型

      find().nodes({@city}) as n
      with n.location as points
      return points
      

      属性locationpoint类型,别名points用来代表属性location,以下示例为RETURN语句引用别名时的情况:

      引用格式
      每条记录返回的数据
      结果类型
      points 具有x、y坐标的数据,如POINT(25 33) RESULT_TYPE_ATTR
      points.x x坐标值 RESULT_TYPE_ATTR
      points.y y坐标值 RESULT_TYPE_ATTR

      其他原子类型

      原子类型,又称基础数据类型,如整数、小数和字符串,均无法拆分成更小成分。原子类型的别名只能被直接引用,因为无法从其表示的数据中进一步提取信息。

      find().nodes({@city}) as n
      with n.name as names
      return upper(names)
      
      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写