有没有办法在 Gremlin 中反转列表?
Is there a way to reverse a list in Gremlin?
Gremlin 查询经常处理或生成列表。有时希望能够反转列表。目前 Gremlin 没有 reverse
步骤,因此您不能执行以下操作:
g.inject(['A','B','C','D']).reverse()
也没有 order
的 reverse
选项,所以你不能做类似
的事情
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]
Gremlin 查询经常处理或生成列表。有时希望能够反转列表。目前 Gremlin 没有 reverse
步骤,因此您不能执行以下操作:
g.inject(['A','B','C','D']).reverse()
也没有 order
的 reverse
选项,所以你不能做类似
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]