如何打印 Gremlin 遍历的所有结果
how to print all result from Gremlin traversal
我有一个拓扑,它是
aws_vpc<------(作文)------测试---(成员资格)---->位置
所以我使用查询
graph.traversal().V().hasLabel("test").or(
__.out("membership").hasLabel("location"),
__.out("composition").hasLabel("aws_vpc"))
到select它,但是如何打印所有元素的名称,
我想输出:test, membership, location, composition, aws_vpc.
有办法实现吗?
您编写了一个遍历,它仅检测“测试”顶点是否具有具有相邻“位置”顶点的传出“成员资格”边或具有相邻“aws_vpc”顶点的传出“组合”边,所以所有的遍历将 return 是匹配该过滤器的“测试”顶点。它不只是“select”。事实上,一旦单个 __.out("membership").hasLabel("location")
或 __.out("composition").hasLabel("aws_vpc")
按照提供给 or()
的顺序 returned,or()
就会立即得到满足,因此您不必'甚至遍历所有这些路径(这对于过滤操作来说是一件好事)。
如果您想要return您描述的所有数据,您需要以这样的方式编写查询以便遍历所有数据并将其转换为return的格式。在您的情况下,一种简单的方法是使用 project()
:
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())
这需要每个“测试”顶点并将其转换为具有三个键的 Map
:“数据”、“成员资格”和“竞争”,然后每个 by()
调制器指定要执行的操作当前的“测试”顶点被转换并将其放置在相应的键中。请注意,我选择 select()
来获取边和顶点组合,但如果您愿意,这也可以是 project()
步骤。关键是以 fold()
结尾,这样您就可以将每个“测试”顶点的边数据流减少为 List
数据,可以放入相关的“成员资格”和“组合”键中.
我有一个拓扑,它是 aws_vpc<------(作文)------测试---(成员资格)---->位置
所以我使用查询
graph.traversal().V().hasLabel("test").or(
__.out("membership").hasLabel("location"),
__.out("composition").hasLabel("aws_vpc"))
到select它,但是如何打印所有元素的名称, 我想输出:test, membership, location, composition, aws_vpc.
有办法实现吗?
您编写了一个遍历,它仅检测“测试”顶点是否具有具有相邻“位置”顶点的传出“成员资格”边或具有相邻“aws_vpc”顶点的传出“组合”边,所以所有的遍历将 return 是匹配该过滤器的“测试”顶点。它不只是“select”。事实上,一旦单个 __.out("membership").hasLabel("location")
或 __.out("composition").hasLabel("aws_vpc")
按照提供给 or()
的顺序 returned,or()
就会立即得到满足,因此您不必'甚至遍历所有这些路径(这对于过滤操作来说是一件好事)。
如果您想要return您描述的所有数据,您需要以这样的方式编写查询以便遍历所有数据并将其转换为return的格式。在您的情况下,一种简单的方法是使用 project()
:
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())
这需要每个“测试”顶点并将其转换为具有三个键的 Map
:“数据”、“成员资格”和“竞争”,然后每个 by()
调制器指定要执行的操作当前的“测试”顶点被转换并将其放置在相应的键中。请注意,我选择 select()
来获取边和顶点组合,但如果您愿意,这也可以是 project()
步骤。关键是以 fold()
结尾,这样您就可以将每个“测试”顶点的边数据流减少为 List
数据,可以放入相关的“成员资格”和“组合”键中.