Gremlin with Neptune如何基于前序边计算结果过滤边

修正后的Gremlin查询
g.V('abc-01-05') .outE('related_to').as('saved_edge') // 提前计算时间阈值:初始边的at_millis加1天(86400000毫秒) .math('at_millis + 86400000').by('at_millis').as('max_time') // 回到IP节点(abc) .select('saved_edge').inV() // 遍历IP节点的所有出向related_to边 .outE('related_to') // 过滤满足时间条件的边 .where(values('at_millis').lte('max_time')) // 获取边指向的业务节点 .inV() // 去重避免重复返回起点abc-01-05 .dedup() .toList()
调整说明
- 原查询错误点:
math('saved_edge + 86400001')无法直接引用边标签saved_edge的属性,必须先取出属性值再做计算 - 修正了边遍历方向:从IP节点出发找关联业务节点需走
outE('related_to'),原查询写为inE方向反向,无法拿到目标节点 - 提前计算好时间阈值存入变量
max_time,后续过滤直接对比变量即可,语法兼容性更强 - 最后增加
dedup步骤,避免起点节点重复返回
内容的提问来源于stack exchange,提问作者Franco Cuevas
相关产品推荐
相关产品推荐

