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())