Gremlin 地图结果上的小精灵顺序

Gremlin 地图结果上的小精灵顺序,gremlin,janusgraph,amazon-neptune,Gremlin,Janusgraph,Amazon Neptune,我有以下疑问: g.V('1') .union( out('R1') .project('timestamp', 'data') .by('completionDate') .by(valueMap().by(unfold())) out('R2') .project('timestamp', 'data') .b

我有以下疑问:

g.V('1')
    .union(
        out('R1')
            .project('timestamp', 'data')
                .by('completionDate')
                .by(valueMap().by(unfold()))
        out('R2')
            .project('timestamp', 'data')
                .by('endDate')
                .by(valueMap().by(unfold()))
        )
如何按时间戳排序联合结果?
我尝试过使用“.order().by('timestamp'),但这只适用于遍历,UNION返回一个映射对象。

这里有几种方法可以实现它。首先,您可以按原样使用代码,然后按“时间戳”使用
order()

请注意,区别在于
select()
要排序的
Map
中的键。3.4.5之后的版本可以使用,您只需通过('timestamp')对
映射以及
元素执行

然而,我认为更具可读性的方法是采用这种方法:

g.V('1').
  out('R1','R2').
  project('timestamp', 'data').
    by(coalesce(values('endDate'), values('completionDate'))).
    by(valueMap().by(unfold())).
  order().by(select('timestamp'))

您可能需要通过(合并(…)
来增强
,具体取决于您的模式的性质,但希望您了解我在那里尝试做什么。

第一种方法非常有效。非常感谢。我不完全确定第二种方法。R1或R2上没有名为“timestamp”的属性。所以我真的不明白按时间戳排序在这种情况下是如何工作的。我将测试并返回另一条评论。对不起,我修改了第二个查询。
g.V('1').
  out('R1','R2').
  project('timestamp', 'data').
    by(coalesce(values('endDate'), values('completionDate'))).
    by(valueMap().by(unfold())).
  order().by(select('timestamp'))