我有两个顶点之间的边缘列表,有时间作为边属性键。 例如: 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)
以选项[字节] 格式返回。
有没有更好的方法来做到这一点。我还需要整数值。
答案 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