UNCOLLECT 可以将 ARRAY 结构的别名中的每个数组元素展开为一行,将其同源别名的每行数据相应复制为多行。展开之后的数据行数为原先每行中数组的长度之和。
语法:uncollect <expression>
as <alias>
参数:
- <expression>:被展开的数组
- <alias>:展开后结果的别名,不可省略
n(2).e()[:3].n(4) as path
with pnodes(path) as a1
uncollect a1 as a2
return path, a2
上面 UQL 代码中的 UNCOLLECT 子句将 ARRAY 结构的别名 a1 由两行展开至 6 行得到 a2,将其同源别名 path 复制为 6 行:
一般用法
示例:查找以银行卡 CA001 为起点、CA003 为终点的三步以内的路径,将这些路径上的点去重后依次返回
ab().src({_id == "CA001"}).dest({_id == "CA003"}).depth(:3) as p
with pnodes(p) as a
uncollect a as n
return distinct(n)