去重函数 distinct() 可以对一列数据进行去重,并返回去重后的数据列。去重后,该数据列的长度小于等于原先数据列的长度;如果去重在 WITH 中进行,则该数据列的其他同源列同步被去重,如果去重在 RETURN 中进行,则其他同源列不发生变化。
Arguments:
- 任意值 <any>,点、边取 UUID
Returns:
- 去重结果 <any>
在一个 UQL 查询语句的单次执行结果中,无论语句别名是点、边还是路径,都不会有重复值。
去重一列 ATTR(数值)
示例:查找 10 条转账边,将转账时间的年份去重后并返回
find().edges({@transfer}) as e
limit 10
return distinct(year(e.time))
去重一列 ATTR(字符串)
示例:查找 10 个点,将 schema 去重后并返回
find().nodes([1,2,3,4,5,6,7,8,9,10]) as n
return distinct(n.@)
去重一列 ATTR(时间)
示例:查找银行卡,将开卡日期 open_date 去重后并返回
find().nodes({@card}) as n
return distinct(n.open_date)
去重一列 NODE
示例:将银行卡 CA001 的两步转出账到达的银行卡去重后并返回
n({_id == "CA001"}).re({@transfer})[2].n({@card} as n)
return distinct(n)
去重一列 EDGE
示例:查找银行卡 CA001 的三步转出账的路径,将第三步转账边去重后返回
n({_id == "CA001"}).re({@transfer})[2].n({@card})
.re({@transfer} as e).n({@card})
return distinct(e)
去重一列 ARRAY
示例:查找银行卡 CA001 的两步转出账的路径,计算每条路径的点集,去重后返回
n({_id == "CA001"}).re({@transfer})[2].n({@card}) as p
return distinct(pnodes(p))