Gremlin:将查询的输出构建为二维数组

Gremlin: Build the output of the query as a 2D array

我想在二维数组中获取图形中所有用户的好友列表,格式如下:

[
  [friend, friend, friend],
  [friend, friend, friend],
  [friend, friend, friend],
] 

我想出了这个查询: g.V().hasLabel("user").both("friend");

但是那个查询 returns 所有用户的朋友并将其放入同一个列表,这不是我想要的,我想要一个二维数组,其中每个项目都是每个用户的朋友列表。

我需要什么来实现这个目标?

您可以通过使用 project(), select(), as well as fold()/unfold() 步骤以所需的方式格式化遍历结果来完成此操作。例如,如果我 运行 下面对 TinkerPop 中的现代图进行遍历:

g.V().project('foff').
    by(
        both().fold().
        project('foff').
        by(
            unfold().both().fold()
        )
    ).
    select(values).unfold().
    select(values).fold()

我得到这样的二维数组答案:

[
  [[v[1],v[4],v[6],v[1],v[5],v[3],v[1]]],
  [[v[3],v[2],v[4]]],
  [[v[3],v[2],v[4],v[5],v[3],v[1],v[3]]],
  [[v[4],v[1],v[4],v[6],v[3],v[2],v[4]]],
  [[v[5],v[3],v[1]]],[[v[1],v[4],v[6]]]
]

自己回复: bechbd 响应是正确的,但更简单易读的解决方案是像这样使用 flatMap()g.hasLabel("user").flatMap(both("friend").fold())