gremlin根据时间过滤掉边缘并获取最大值

时间:2016-10-12 07:45:44

标签: scala graph-databases titan gremlin

我有两个顶点之间的边缘列表,有时间作为边属性键。 例如: A - > B(时间= t1,年龄= 20),A - > B(时间= t2,年龄= 30) ......

我需要获取大于给定时间的边缘并获取属性“年龄”的最大值

代码示例:

 val end_time = System.currentTimeMillis() - duration
 val r = graph.V().has(ID, name).outE.filter { it: Edge =>
      (it.property(time).value() > end_time)
    }
 println("r.values("age").max().headOption().get)

选项[字节] 格式返回。

有没有更好的方法来做到这一点。我还需要整数值。

1 个答案:

答案 0 :(得分:3)

首先,你应该避免使用lambdas: http://tinkerpop.apache.org/docs/current/reference/#a-note-on-lambdas

您可以使用以下查询根据特定的最小值过滤边缘:

g.V().has('ID', 'a').outE().where(values('time').is(gt(end_time)))

如果您现在想要获得边缘属性的最大值,例如这些边缘的年龄,您只需将其添加到查询中:

g.V().has('ID', 'a').outE().where(values('time').is(gt(end_time))).values('age').max()

GremlinBin中的快速演示: http://gremlinbin.com/bin/view/57ff3da399bc6