修改密码

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

修改昵称

当前昵称:
提交
搜索
v4.0
    v4.0

    RETURN 返回

    格式、参数

    RETURN 可以对数据流进行函数运算,将多个返回值(数据列)组装到一起返回给用户。返回值中有非同源列时,按照同源列长度的最小值对各列进行裁剪(或不裁剪  V4.1 )。

    语法:

    • 格式:return <column1> as <alias1>, <column2> as <alias2>, ...
    • 参数:(见下表)
    • 受影响列:<column> 及其所有同源列
    名称 类型 规范 描述
    <column> NODE,EDGE,PATH,ATTR,ARRAY,TABLE / 返回值,多个返回值可以为同源列、非同源列
    <alias> string 同自定义别名的命名规范 返回值的别名,可省略

    详解

    find().nodes() as n1 limit 5
    n(3).e()[2].n(as n2) as path
    return n1, pnodes(path), distinct(n2.color)
    

    上面 UQL 代码中的 RETURN 子句中有三个返回值,类型分别为 NODE,ARRAY,ATTR;其中第一列和后两列非同源,使用 V4.0 版引擎时不会返回红色虚线以下的部分:

    在 RETURN 子句中对某列进行去重操作时,不影响其同源列的长度。RETURN 子句通常出现在 UQL 语句的末尾,个别情况时其后可以出现 ORDER BY、LIMIT、SKIP。

    关于 RETURN 子句中如何指定 NODE、EDGE、PATH 所携带的属性,请阅读《查询》-《返回值》一章。

    返回 NODE

    示例:返回 10 个点的全部属性值

    find().nodes() as n
    limit 10
    return n{*} 
    

    示例:获取 50 个 @card 或 @customer 点,携带 balance、level

    find().nodes({@card || @customer}) as n
    limit 50
    return n{balance, level}
    

    分析:@card 点有 balance、level 两种属性,@customer 点只有 level。返回值仅携带其自身具有的属性。

    返回 EDGE

    示例:返回 50 条边,不携带任何自定义属性

    find().edges() as e
    limit 50
    return e
    

    返回 PATH

    示例:返回 10 条三步路径,不携带点、边的任何自定义属性

    n().e()[3].n() as p
    limit 10
    return p 
    

    示例:返回 10 条顾客的银行卡之间的一步转账路径,携带 balance 和 time

    n({@customer}).e().n({@card})
      .e().n({@card})
      .e().n({@customer}) as p
    limit 10
    return p{balance}{time} 
    

    分析:返回值仅携带其自身具有的属性。@card 点将携带 balance,@transfer 边将携带 time,所有点、边均携带系统属性及 schema。

    示例:返回 10 条顾客的银行卡之间的一步转账路径,所有点携带全部属性,所有边不携带任何自定义属性

    n({@customer}).e().n({@card})
      .e().n({@card})
      .e().n({@customer}) as p
    limit 10
    return p{*}{} 
    

    示例:返回 10 条顾客的银行卡之间的一步转账路径,所有点、边携带全部属性

    n({@customer}).e().n({@card})
      .e().n({@card})
      .e().n({@customer}) as p
    limit 10
    return p{*}
    

    返回 ATTR

    示例:获取 100 条边,返回它们的 schema 名称、amount(如有)

    find().edges() as e
    limit 100
    return e.@, e.amount
    

    分析:没有 amount 的边在返回值 e.amount 中将返回空值。

    示例:统计所有银行卡余额的最大值

    find().nodes({@card}) as n
    return max(n.balance)
    

    返回 ARRAY

    示例:获取 10 个银行卡,将卡号聚合为数组并返回

    find().nodes({@card}) as n
    limit 10
    return collect(n._id)
    

    返回 TABLE

    示例:获取 10 条转账边,将边的起点卡号、终点卡号、转账金额合并为表格并返回

    n(as n1).e({@transfer} as e).n(as n2)
    limit 10
    return table(n1._id, n2._id, e.amount)
    
    请完成以下信息后可下载此书
    *
    公司名称不能为空
    *
    公司邮箱必须填写
    *
    你的名字必须填写
    *
    你的电话必须填写
    *
    你的电话必须填写