修改密码

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

搜索
    中文

      过滤器

      概述

      过滤器(Filter)用于在获取点、边数据时根据它们的schema和属性值设置条件。

      过滤器在嬴图GQL查询子句中代表点或边的方法中使用。例如,find()命令的nodes()方法以及ab()命令的edge_filter()方法。

      语法

      嬴图GQL的过滤器是一个用花括号{ }包裹的表达式,通常调用点、边的schema和属性。

      示例:获取@user点以及rating大于3的@movie点。

      find().nodes({@user || @movie.rating > 3}) as n
      return n{*}
      

      过滤器一般返回bool类型的值(真或假)或null,并且只有判断结果为真的点或边才会被返回。

      有时,过滤器中表达式的结果不是bool值也不是null,此时过滤器根据结果的类型和具体的值将结果转换为bool值:

      类型 何时转为真 何时转为假
      int32,uint32,int64,uint64,float,double 非零值 零值
      string,text 首个字符不是0 首个字符是0
      datetime 非0000-00-00 00:00:00 0000-00-00 00:00:00
      timestamp 非1970-01-01 08:00:00 +08:00 1970-01-01 08:00:00 +08:00
      point 从不 任意值
      list 从不 任意值

      示例:获取@user点,并且要求点的age属性值减33的结果不为0。

      find().nodes({@user.age - 33}) as n
      return n{*}
      

      示例

      一般过滤

      在任意查询子句中,通过将点、边的schema和属性值与常量或别名进行比较来对点、边进行过滤。

      find().nodes({@user.registeredOn >= "2021-09-01 09:00:00"}) as u1
      with max(u1.age) as maxAge
      find().nodes({@user.age == maxAge}) as u2
      return u2
      
      n(as start).e()[3].n({level == start.level}) as p
      return p
      

      注意:第二个点模板n()使用了前面一个点模板中定义的别名。

      一般情况下,属性可以直接在过滤器中使用,无需创建索引。不过,创建不同类型的索引可以有效地对查询过程进行加速,具体请参考加速机制

      步间过滤

      在基于模板查询子句中,可使用系统别名prev_nprev_e实现步间过滤。

      n({@card}).e({@transfersTo.time > prev_e.time})[3].n({@card}) as p
      return p
      

      prev_nprev_e调用的属性(即此例中的time属性)必须进行LTE加速。

      有些路径查询命令(如ab())支持的方法path_ascend()path_descend()也能实现类似步间过滤的效果,它们也要求使用的属性必须LTE。不过,这两个方法的内容不是以过滤器的形式书写的。

      ab().src({_id == "A"}).dest({_id == "E"}).depth(:3).path_ascend(@default.weight) as p
      return p{*}
      

      全文过滤

      在任意查询子句中,可使用已创建的全文索引对点、边进行过滤。

      find().nodes({~content CONTAINS "graph computing parallel"}) as n
      return n{*}
      
      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写