修改密码

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

修改昵称

当前昵称:
提交

搜索
v4.0
    v4.0

    组网

    命令、参数

    查询一组起点和一组终点之间的路径,由于是将起点、终点配对后进行 AB 路径查询,故可以理解为 ab() 命令的批处理模式,且其参数 limit() 所限制的是每次 AB 路径查询的返回结果的条数,而非总的结果条数。

    可实现两种不同的查询:互组网、自组网。即:

    • 互组网:N 个起点和 M 个终点组网,需进行 N * M 次 AB 路径查询
    • 自组网:N 个点两两组网,需进行 N(N-1)/2 次 AB 路径查询
    互组网(左)、自组网(右)
    (每条连线代表一次 AB 路径查询)

    语法:

    • 命令:autonet()
    • 必选参数:src()depth()
    • 全部参数:(见下表)
    • 语句别名类型:PATH
    参数 类型 规范 描述 参数别名类型
    src() filter / 路径起点的过滤条件 NODE
    dest() filter / 路径终点的过滤条件,此时为互组网查询;不使用本参数时为自组网查询 NODE
    depth() range >0 设置路径的深度
    depth(N): N 步
    depth(:N): 1~N 步
    depth(M:N): M~N 步
    depth(N).shortest(): N 步内的最短路径
    不支持自定义别名
    shortest() / / 查询 N 步内最短路径,此时 depth() 参数需填写固定值 不支持自定义别名
    node_filter() filter / 中介点(非 src、非 dest)的过滤条件 不支持自定义别名
    edge_filter() filter / 所有边的过滤条件 不支持自定义别名
    direction() string left, right 规定边的方向 不支持自定义别名
    no_circle() / / 不返回含有环路成分的路径,环路成分的定义可参见《背景知识》中的术语介绍 不支持自定义别名
    limit() int -1 或 >=0 AB 路径查询单次执行时返回结果的条数,-1 表示返回所有结果 不支持自定义别名

    互组网 N 步查询

    示例:以银行卡 CA001、CA002、CA003 为起点,以顾客 CU001、CU002 为终点,互组网查找 5 步路径,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CU001","CU002"]}).depth(5)
      .limit(2) as p
    return p{*}
    

    互组网 1~N 步查询

    示例:以银行卡 CA001、CA002、CA003 为起点,以顾客 CU001、CU002 为终点,互组网查找 5 步以内的路径,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CU001","CU002"]}).depth(:5)
      .limit(2) as p
    return p{*}
    

    互组网 M~N 步查询

    示例:以银行卡 CA001、CA002、CA003 为起点,以顾客 CU001、CU002 为终点,互组网查找 3~5 步路径,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CU001","CU002"]}).depth(3:5)
      .limit(2) as p
    return p{*}
    

    互组网无权重最短路径查询

    示例:以银行卡 CA001、CA002、CA003 为起点,以顾客 CU001、CU002 为终点,互组网查找 5 步以内的最短路径,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CU001","CU002"]}).depth(5)
      .shortest().limit(2) as p
    return p{*}
    

    互组网中介点过滤查询

    示例:以银行卡 CA001、CA002、CA003 为起点,以顾客 CU001、CU002 为终点,互组网查找 5 步以内的路径,要求中介点不是银行卡,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CU001","CU002"]}).depth(:5)
      .node_filter({!@card}).limit(2) as p
    return p{*}
    

    互组网边过滤查询

    示例:以银行卡 CA001、CA002、CA003 为起点,以顾客 CU001、CU002 为终点,互组网查找 5 步以内的路径,要求边不是转账边,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CU001","CU002"]}).depth(:5)
      .edge_filter({!@transfer}).limit(2) as p
    return p{*}
    

    互组网右向边查询

    示例:以银行卡 CA001、CA002、CA003 为起点,以银行卡 CA022、CA029 为终点,互组网查找 5 步以内的路径,要求边均为右向边,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CA022","CA029"]}).depth(:5)
      .direction(right).limit(2) as p
    return p
    

    互组网左向边查询

    示例:以银行卡 CA001、CA002、CA003 为起点,以银行卡 CA022、CA029 为终点,互组网查找 5 步以内的路径,要求边均为左向边,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CA022","CA029"]}).depth(:5)
      .direction(left).limit(2) as p
    return p
    

    互组网去除环路查询

    示例:以银行卡 CA001、CA002、CA003 为起点,以银行卡 CA022、CA029 为终点,互组网查找 5 步以内的路径,去除环路,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CA022","CA029"]}).depth(:5)
      .no_circle().limit(2) as p
    return p
    

    互组网总查询数量限制

    示例:以银行卡 CA001、CA002、CA003 为起点,以顾客 CU001、CU002 为终点,互组网查找 5 步路径,返回 10 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CU001","CU002"]}).depth(5) as p
    limit 10 
    return p{*}
    

    自组网 N 步查询

    示例:以银行卡 CA001、CA002、CA003 为起点、终点,自组网查找 5 步路径,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).depth(5)
      .limit(2) as p
    return p{*}
    

    自组网 1~N 步查询

    示例:以银行卡 CA001、CA002、CA003 为起点、终点,自组网查找 5 步以内的路径,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).depth(:5)
      .limit(2) as p
    return p{*}
    

    自组网 M~N 步查询

    示例:以银行卡 CA001、CA002、CA003 为起点、终点,自组网查找 3~5 步路径,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).depth(3:5)
      .limit(2) as p
    return p{*}
    

    自组网无权重最短路径查询

    示例:以银行卡 CA001、CA002、CA003 为起点、终点,自组网查找 5 步以内的最短路径,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).depth(5)
      .shortest().limit(2) as p
    return p{*}
    

    自组网中介点过滤查询

    示例:以银行卡 CA001、CA002、CA003 为起点、终点,自组网查找 5 步以内的路径,要求中介点不是银行卡,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).depth(:5)
      .node_filter({!@card}).limit(2) as p
    return p{*}
    

    自组网边过滤查询

    示例:以银行卡 CA001、CA002、CA003 为起点、终点,自组网查找 5 步以内的路径,要求边不是转账边,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).depth(:5)
      .edge_filter({!@transfer}).limit(2) as p
    return p{*}
    

    自组网右向边查询

    示例:以银行卡 CA001、CA002、CA003 为起点、终点,自组网查找 5 步以内的路径,要求边均为右向边,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).depth(:5)
      .direction(right).limit(2) as p
    return p
    

    自组网左向边查询

    示例:以银行卡 CA001、CA002、CA003 为起点、终点,自组网查找 5 步以内的路径,要求边均为左向边,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).depth(:5)
      .direction(left).limit(2) as p
    return p
    

    自组网去除环路查询

    示例:以银行卡 CA001、CA002、CA003 为起点、终点,自组网查找 5 步以内的路径,去除环路,每组返回 2 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).depth(:5)
      .no_circle().limit(2) as p
    return p
    

    自组网总查询数量限制

    示例:以银行卡 CA001、CA002、CA003 为起点、终点,自组网查找 5 步路径,返回 10 条路径

    autonet()
      .src({_id in ["CA001","CA002","CA003"]}).depth(5) as p
    limit 10 
    return p{*}
    
    请完成以下信息后可下载此书
    *
    公司名称不能为空
    *
    公司邮箱必须填写
    *
    你的名字必须填写
    *
    你的电话必须填写
    *
    你的电话必须填写