我有以下查询:
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()))
)
如何按时间戳对UNION结果进行排序?我尝试过使用".order((.by('timestamp'(",但这只适用于遍历和UNION返回MAP对象。
以下是几种方法。首先,您可以按原样使用代码,然后按"时间戳"使用order()
:
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(select('timestamp'))
请注意,不同之处在于select()
是您想要排序的Map
中的键。3.4.5之后的版本将更符合您的预期,您可以简单地为Map
和Element
执行by('timestamp')
。
然而,我认为更可读的方法是采用这种方法:
g.V('1').
out('R1','R2').
project('timestamp', 'data').
by(coalesce(values('endDate'), values('completionDate'))).
by(valueMap().by(unfold())).
order().by(select('timestamp'))
根据模式的性质,您可能需要增强by(coalesce(...))
,但希望您了解我在那里要做什么。