有没有办法在Gremlin中反转列表?

有没有办法在Gremlin中反转列表?,gremlin,tinkerpop,tinkerpop3,Gremlin,Tinkerpop,Tinkerpop3,小精灵查询通常使用或生成列表。有时,能够反转列表是可取的。目前,Gremlin没有反向步骤,因此您无法执行以下操作: g.inject(['A','B','C','D']).reverse() 对于订单也没有反向选项,因此您不能执行类似的操作 g.inject(['A','B','C','D']).order(local).by(reverse) 现在有没有一种方法可以在不使用闭包的情况下在Gremlin中反转列表?现在可以使用现有的Gremlin步骤来实现这一点。下面的示例利用索引步骤为列

小精灵查询通常使用或生成列表。有时,能够反转列表是可取的。目前,Gremlin没有
反向
步骤,因此您无法执行以下操作:

g.inject(['A','B','C','D']).reverse()
对于
订单
也没有
反向
选项,因此您不能执行类似的操作

g.inject(['A','B','C','D']).order(local).by(reverse)

现在有没有一种方法可以在不使用闭包的情况下在Gremlin中反转列表?

现在可以使用现有的Gremlin步骤来实现这一点。下面的示例利用
索引
步骤为列表的每个元素提供一个索引号。例如:

gremlin> g.inject(['A','B','C','D']).index()
==>[[A,0],[B,1],[C,2],[D,3]]   
考虑到构建块,我们可以使用这些索引值并对列表进行排序

gremlin>  g.inject(['A','B','C','D']).index().
......1>    unfold().
......2>    order().
......3>      by(tail(local,1),desc)
==>[D,3]
==>[C,2]
==>[B,1]
==>[A,0]   
最后一步是返回已删除索引值的重新排序列表

gremlin>  g.inject(['A','B','C','D']).index().
......1>    unfold().
......2>    order().
......3>      by(tail(local,1),desc).
......4>    limit(local,1).
......5>    fold()  
==>[D,C,B,A]