将集合与 Gremlin 查询相结合
Combining Collections With Gremlin Query
您好,我是 Tinkerpop 和 Gremlin 的新手,我正在努力尝试执行遍历。
基本上我有一组顶点 ID,我想从中遍历并从某些外边找到一组顶点。我想将外边之后的顶点与其来源的准确性相关联。例如:
v1 -> e1 -> v2
v1 -> e2 -> v4
v3 -> e3 -> v5
v3 -> e4 -> v6
所以 v1 有 2 个出边(e1 和 e2)到 v2 和 v4,v3 有 2 个出边(e3 和 e4)到 v5 和 v6。我想要的是得到看起来像这样的遍历结果
[[[v1],[v2,v4]],[v3,[v5,v5]]]
有人可以帮助我使用 Gremlin 进行遍历来帮助我获得该结果吗?我最接近的是这样的
graph.traversal().V(4264,40964144).as('people').map{it.get().vertices(OUT, 'codes_in')}.as('languages').union(select('people'), select('languages'))
这是您可以使用 "modern" toy graph 演示的一种方法:
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]]]
它只是使用 group()。第一个 by()
调制器代表每个组的键(在本例中为起始顶点),然后第二个 by()
调制器是您想要的组(在本例中为 out()
顶点).请注意,您必须在第二个 by()
中包含 fold()
以强制迭代该内部遍历。
顺便说一句,graph.traversal()
不是一个好的模式。创建 TraversalSource
一次并重新使用它。
您好,我是 Tinkerpop 和 Gremlin 的新手,我正在努力尝试执行遍历。
基本上我有一组顶点 ID,我想从中遍历并从某些外边找到一组顶点。我想将外边之后的顶点与其来源的准确性相关联。例如:
v1 -> e1 -> v2
v1 -> e2 -> v4
v3 -> e3 -> v5
v3 -> e4 -> v6
所以 v1 有 2 个出边(e1 和 e2)到 v2 和 v4,v3 有 2 个出边(e3 和 e4)到 v5 和 v6。我想要的是得到看起来像这样的遍历结果
[[[v1],[v2,v4]],[v3,[v5,v5]]]
有人可以帮助我使用 Gremlin 进行遍历来帮助我获得该结果吗?我最接近的是这样的
graph.traversal().V(4264,40964144).as('people').map{it.get().vertices(OUT, 'codes_in')}.as('languages').union(select('people'), select('languages'))
这是您可以使用 "modern" toy graph 演示的一种方法:
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]]]
它只是使用 group()。第一个 by()
调制器代表每个组的键(在本例中为起始顶点),然后第二个 by()
调制器是您想要的组(在本例中为 out()
顶点).请注意,您必须在第二个 by()
中包含 fold()
以强制迭代该内部遍历。
顺便说一句,graph.traversal()
不是一个好的模式。创建 TraversalSource
一次并重新使用它。