Java 如何打印Gremlin遍历的所有结果

Java 如何打印Gremlin遍历的所有结果,java,gremlin,graph-databases,Java,Gremlin,Graph Databases,我有一个拓扑,它是 自动气象站 所以我使用查询 graph.traversal().V().hasLabel("test").or( __.out("membership").hasLabel("location"), __.out("composition").hasLabel("aws_vpc")) 选择它,但如

我有一个拓扑,它是 自动气象站

所以我使用查询

graph.traversal().V().hasLabel("test").or(
                    __.out("membership").hasLabel("location"),
                    __.out("composition").hasLabel("aws_vpc"))
选择它,但如何打印所有元素的名称, 我想输出:测试,成员资格,位置,组成,aws_vpc


有没有办法做到这一点?

您编写了一个遍历,该遍历只检测“测试”顶点是否有具有相邻“位置”顶点的传出“成员”边或具有相邻“aws_vpc”顶点的传出“合成”边,因此遍历将返回与该过滤器匹配的“测试”顶点。它不会“选择”除此之外的任何内容。事实上,只要一个
\uuuuuu.out(“成员”).hasLabel(“位置”)
\uuuuuuuuuu.out(“组合”).hasLabel(“aws\u vpc”)
按照它们提供给
或()
的顺序返回,就立即满足了
或()

如果希望返回所描述的所有数据,则需要以这样的方式编写查询,以便遍历所有数据并将其转换为要返回的格式。在您的情况下,一个简单的方法是使用
project()

这将获取每个“测试”顶点并将其转换为具有三个键的
贴图
,“数据”、“成员资格”和“竞争”,然后每个
by()
调制器指定如何处理正在转换的当前“测试”顶点,并将其放置在相应的键中。请注意,我选择了
select()
来获得边和顶点的组合,但如果您愿意,这也可能是
project()
步骤。那里的键以
fold()
结束,这样可以将每个“测试”顶点的边数据流减少到一个
列表,该列表可以放入相关的“成员身份”和“组合”键中

g.V().hasLabel('test').
  project('data','memberships', 'compositions').
    by(__.elementMap()).
    by(__.outE("membership").as('e').
          inV().hasLabel("location").as('v').
          select('e','v').
            by(elementMap()).
          fold()).
    by(__.outE("composition").as('e').
          inV().hasLabel("aws_vpc").as('v').
          select('e','v').
            by(elementMap()).
          fold())