修改密码

请输入密码
请输入密码 请输入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

      别名

      别名是分配给特定类型数据集合的唯一名称(标识符)。您可在整个查询中使用别名来引用这些数据,从而实现数据检索、操作和进一步处理。

      声明和引用

      别名可通过紧跟某些语句之后使用关键词as声明(即语句别名),也可在语句方法中声明(即方法别名)。该别名代表由语句检索或生成的数据。

      您可在后续查询中引用别名以进一步使用该数据,或将其返回给客户端。

      示例

      请参阅各语句的语法以确定是否支持语句别名和方法别名。

      为语句find().edges()声明别名e,并在语句RETURN中引用:

      find().edges({@direct}) as e
      return e.time
      

      由于edges()方法不支持声明别名,以下查询会引发语法错误:

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

      为语句autonet()声明别名paths,为其方法src()声明别名start,最后在语句RETURN中引用:

      autonet().src({age < 60} as start).dest({@event}).depth(3) as paths
      return start, paths
      

      为语句find().nodes()声明别名a,在语句WITH中引用以计算最小年龄,并将结果声明为minAge,随后在另一个find().nodes()语句中引用minAge,获取该年龄对应的账户信息,并将其声明为b,最后在RETURN语句中引用别名b,输出账户名称:

      find().nodes({@account}) as a
      with min(a.age) as minAge
      find().nodes({@account.age == minAge}) as b
      return b.name
      

      路径模板语句中,在首个n()中声明别名start,在最后一个n()中将其引用,从而形成一个简单回路:,

      n(as start).e()[3].n({_id == start._id}) as p
      return p limit 1
      

      命名规范

      别名命名规范如下:

      • 1~64个字符
      • 不能以波浪号~开头
      • 不能包含反引号`或任何保留关键字

      尽量不要使用属性名作为别名。如果需要,请使用系统别名this来消除歧义。

      别名类型

      别名类型与其代表的数据类型保持一致。

      本条查询中,别名users代表点,因此其类型是NODE;别名ages代表属性ages的属性值,因此与age的数据类型相同:

      find().nodes({@user}) as users
      return users.age as ages
      

      引用别名

      可根据别名类型,在部分语句中直接引用别名,或从别名中提取指定数据以供使用。

      下表展示了引用不同别名类型时的示例:

      别名
      (别名类型)
      别名引用 代表的数据 数据类型
      n
      (NODE)
      n NODE
      n.name 属性name的值 name相同
      n.@ 点的schema string
      e
      (EDGE)
      e EDGE
      e.time 属性time的值 Same with time
      e.@ 边的schema string
      p
      (PATH)
      p 路径 PATH
      lists
      (list)
      lists 列表 list
      lists[2] 第3个元素 与该元素相同
      lists[0:3] 由第1个元素到第4个元素组成的列表 list
      lists[:5] 由第1个元素到第6个元素组成的列表 list
      lists[2:] 由第3个元素到最后一个元素组成的列表 list
      points
      (point)
      points 点,每个点有两个坐标 point
      points.x x坐标值 double
      points.y y坐标值 double

      语句RETURN支持更多别名引用格式。

      系统别名

      系统别名专为特殊目的设计,无需声明即可使用。UQL提供三种系统别名:路径模板中的prev_nprev_e,用于步间过滤;过滤条件中的this,在引用别名时,可用来区分与属性重名的别名。

      prev_n

      别名prev_n专用于点模板或边模板,用来指代路径中当前点或边的前一个点。

      (1)在单点模板n()中使用prev_n

      在路径模板的首个n()中使用prev_n,由于该点前没有其他点供prev_n引用,因此无结果返回。

      (2)在单边模板e()中使用prev_n

      (3)在多边模板e()[]中使用prev_n

      (4)在多边包含中间点的模板e().nf()[]中使用prev_n

      请注意,prev_n引用的点必须具备其调用的属性y

      本例查找路径,其起点为@actor,终点为@movie,且点@movierating属性需大于前一个点@actorscore属性:

      n({@actor}).e().n({@movie.rating > prev_n.score}) as p
      return p{*}
      

      prev_e

      别名prev_e专用于点模板或边模板,用来指代路径中当前点或边的前一条边。

      (1)在单点模板n()中使用prev_e

      在路径模板的首个n()中使用prev_e,由于该点前没有其他边供prev_n引用,因此无结果返回。

      (2)在单边模板e()中使用prev_e

      在路径模板的首个e()中使用prev_e,由于该边前没有其他边供prev_n引用,因此无结果返回。

      (3)在多边模板e()[]中使用prev_e

      在路径模板的首个e()[]中使用prev_e,由于第一条边前没有其他边供prev_n引用,因此无结果返回。

      (4)在多边包含中间点的模板e().nf()[]中使用prev_e

      在路径模板的首个e().nf()[]中使用prev_e,由于第一条边前没有其他边供prev_n引用,因此无结果返回。

      请注意,prev_e引用的边必须具备其调用的属性y

      本例查找@card点间的4步路径,由交易的出边组成,且交易时间按升序排列:

      n({@card}).re({@transfers}).n({@card})
        .re({@transfers.time > prev_e.time})[3]
        .n({@card}) as p
      return p{*}
      

      this

      在点或边过滤器中使用别名this,可消除别名与点属性或边属性重名带来的歧义。

      以下示例声明了别名balance,鉴于balance同样为点属性,因此在过滤器中使用this.balance用以指定点属性balance

      ... as balance
      find().nodes({this.balance > 5000})
      ...
      

      如果上例使用了{balance > 5000},则指的是别名balance

      默认别名

      语句find().nodes()提供了默认别名nodes以代表检索到的点。同样,语句find().edges()也提供了默认别名edges来代表检索到的边。

      您可直接引用默认别名,无需声明。

      find().nodes({@account})
      return nodes{*}
      

      如果声明了自定义别名,默认别名将会失效。

      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写