格林姆林:使用时间戳属性过滤重复边缘

时间:2018-07-20 20:29:19

标签: gremlin

我有不同时间戳的重复边,需要获取最新的时间戳边,正尝试通过以下查询来获取。无法使用.max(),因为它适用于数字。还有其他选择吗?

g.V().has('streamPath','/local/Prod/SupportBI/Prod/Staging/Integration/Chat/MSaaSChatCompleted.ss').as('ParentStream').outE('generate').order().by('timestamp', decr).values('timestamp')

样本输出

[
  "2018-07-10T20:18:57",
  "2018-07-10T20:18:57",
  "2018-07-10T20:16:39",
  "2018-07-10T20:16:39",
  "2018-07-10T20:07:51",
  "2018-07-10T16:18:56",

我的实际查询:

g.V().has('streamPath','/Chat/Completed.ss').as('ParentStream').outE('generate').as('Edges').map(select('Edges').inV()).as ('NextStream').select('ParentStream', 'NextStream','Edges').simplePath()

我得到重复的边缘(时间戳,jobid,id不同,属性重置相同)。需要采用具有最新时间戳的最近边缘。

1 个答案:

答案 0 :(得分:0)

如果您有这个:

g.V().has('streamPath','/local/Prod/SupportBI/Prod/Staging/Integration/Chat/MSaaSChatCompleted.ss').as('ParentStream').
  outE('generate').
  order().
    by('timestamp', decr).
  values('timestamp')

难道您不能在其中加上limit(1)来获得第一个,因为您首先为最近的时间戳记订购了它。

作为补充,在TinkerPop 3.4.0(此答案发布时尚未发布)中,您可以将max()与任何Comparable一起使用:

gremlin> g.V().values('name').max()
==>vadas