将集合与Gremlin查询相结合

将集合与Gremlin查询相结合,gremlin,tinkerpop,Gremlin,Tinkerpop,嗨,我是Tinkerpop和Gremlin的新手,我正在努力进行遍历 基本上,我有一组顶点ID,我想从中遍历,并从某些外边缘找到一组顶点。我想把沿着外边缘的顶点与它的准确性联系起来。例如: v1->e1->v2 v1->e2->v4 v3->e3->v5 v3->e4->v6 因此,v1有两个输出边(e1和e2)到v2和v4,v3有两个输出边(e3和e4)到v5和v6。我想要的是得到一个遍历的结果,它看起来像这样 [[v1],[v2,v4],[v3[v5,v5]]] 有人能帮我使用小精灵进行

嗨,我是Tinkerpop和Gremlin的新手,我正在努力进行遍历

基本上,我有一组顶点ID,我想从中遍历,并从某些外边缘找到一组顶点。我想把沿着外边缘的顶点与它的准确性联系起来。例如:

v1->e1->v2
v1->e2->v4
v3->e3->v5
v3->e4->v6
因此,v1有两个输出边(e1和e2)到v2和v4,v3有两个输出边(e3和e4)到v5和v6。我想要的是得到一个遍历的结果,它看起来像这样
[[v1],[v2,v4],[v3[v5,v5]]]

有人能帮我使用小精灵进行遍历,从而帮助我得到那个结果吗?我最接近的就是这样的东西
graph.traversal().V(426440964144).as('people').map{it.get().vertices(OUT,'codes_in')}.as('languages').union(select('people'),select('languages'))

这里有一种方法可以用“现代”演示:

它只是使用。第一个
by()
调制器代表每个组的键(在本例中为起始顶点),然后第二个
by()
调制器代表您组中所需的键(在本例中为
out()
顶点)。请注意,必须在第二个
by()
中包含
fold()
,以强制迭代该内部遍历


顺便说一下,执行
graph.traversal()
不是一个好模式。创建
TraversalSource
一次,然后重新使用它。

谢谢Stephen,这就成功了。比我预想的容易多了!实际上,斯蒂芬,我还有一个问题。我希望v1和v3的属性也包含在结果中。我认为您提供的查询不会出现这种情况。我想我找到了一个有效的查询
graph.traversal().V(426440964144).group().by().by(union(fold(),out()).fold())
gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V(1,4).group().by().by(out().fold())
==>[v[1]:[v[3], v[2], v[4]], v[4]:[v[5], v[3]]]