Scala gremlin基于时间过滤边缘并获取最大值

Scala gremlin基于时间过滤边缘并获取最大值,scala,graph-databases,titan,gremlin,Scala,Graph Databases,Titan,Gremlin,我有两个顶点之间的边列表,时间作为边属性键。 如: A-->B(时间=t1,年龄=20岁),A-->B(时间=t2,年龄=30岁) 我需要获取大于给定时间的边,并获取属性“age”的最大值 代码示例: val end_time = System.currentTimeMillis() - duration val r = graph.V().has(ID, name).outE.filter { it: Edge => (it.property(time).value()

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

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

代码示例:

 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)
这将以选项[Byte]格式返回


有没有更好的办法。此外,我还需要整数形式的值。

首先,通常应避免使用lambda:

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

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()

首先,通常应避免使用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()

谢谢你的回答。实际上,我的查询是如何在所有边的时间戳都大于给定时间的情况下获取age属性的最大值。像这样修改查询
graph.V().has(ID,'A').outE().where(u.value(“time”).is(P.gt(end\u time))).value(“age”).min().head
,返回字节。我需要它作为整数。如何转换为int。我编辑了我的答案,还包括如何获得过滤边的最大年龄。但是我真的不能帮你解决获取正确返回类型的问题。您使用的是哪个版本的Gremlin?刚刚注意到您的问题带有“scala”标记,因此您的问题可能是特定于Gremlin-scala的。谢谢您的回答。实际上,我的查询是如何在所有边的时间戳都大于给定时间的情况下获取age属性的最大值。像这样修改查询
graph.V().has(ID,'A').outE().where(u.value(“time”).is(P.gt(end\u time))).value(“age”).min().head
,返回字节。我需要它作为整数。如何转换为int。我编辑了我的答案,还包括如何获得过滤边的最大年龄。但是我真的不能帮你解决获取正确返回类型的问题。您使用的是哪个版本的Gremlin?刚刚注意到您用“scala”标记了您的问题,因此您的问题可能是特定于Gremlin scala的。