首页 > 解决方案 > Gremlin:将查询的输出构建为二维数组

问题描述

我想以二维数组格式获取图形的所有用户的朋友列表,例如:

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

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

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

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

标签: gremlintinkerpopgremlin-server

解决方案


您可以通过使用project()select()以及fold() / expand()步骤来以所需的方式格式化遍历结果。例如,如果我在 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]]]
]

推荐阅读