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

Is there a way to reverse a list in Gremlin?

Gremlin 查询经常处理或生成列表。有时希望能够反转列表。目前 Gremlin 没有 reverse 步骤,因此您不能执行以下操作:

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

也没有 orderreverse 选项,所以你不能做类似

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

现在有没有一种方法可以在 Gremlin 中反转列表而不必退回到使用闭包?

今天仅使用现有的 Gremlin 步骤就可以做到这一点。下面的示例利用 index 步骤为列表的每个元素指定一个索引号。例如:

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]   

最后一步是 return 删除了索引值的重新排序的列表。

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]