命令、参数
将多个路径模板用别名关联后构成子图并进行查询。其中,体现关联关系的别名可以为路径中的点、边。
语法:
- 命令:
graph([<path1>, <path2>, ...])
- 参数:路径模板(多个路径写在命令内,以英文逗号隔开)
- 语句别名:不支持
一个关联别名
示例:参考下图所示的路径结构,查看接收过顾客 CU013、CU016 的转账的顾客,返回这些顾客且携带全部信息
graph([
n({_id == "CU013"}).re().n({@card}).re({@transfer}).n({@card} as n).le().n({@customer} as c),
n({_id == "CU016"}).re().n({@card}).re({@transfer}).n(n)
])
return c{*}
分析:该子图使用点别名 n 将两个路径进行关联。
多个关联别名
示例:参考下图所示的路径结构,查询这样的转账环路:3 个不同顾客的银行卡按照单一方向进行环路转账,返回这样的顾客组合
graph([
n({@customer} as A1).re().n({@card} as C1),
n({@customer && _uuid < A1._uuid} as A2).re().n({@card} as C2),
n({@customer && _uuid < A2._uuid} as A3).re().n({@card} as C3),
n(C1).re().n(C2).re().n(C3).re().n(C1)
])
return A1{*}, A2{*}, A3{*}
分析:该子图使用点别名 C1、C2、C3 将四个路径进行关联。
示例:参考下图所示的路径结构,查询这样的银行卡信息:两个不同的银行卡使用了相同的邮箱、手机号、设备,返回这样的银行卡组合
graph([
n({@card} as C1).e().n({@email}).e().n({@card && _uuid > C1._uuid} as C2),
n(C1 as C11).e().n({@phone}).e().n(C2 as C22),
n(C11).e().n({@device}).e().n(C22)
])
return table(C11._id, C22._id)
分析:该子图使用点别名 C1、C2 将三个路径进行关联;注意,多次引用同一个别名时须在每次引用后对该别名重新定义,如本例中将 C1 重新定义为 C11,将 C2 重新定义为 C22。