Voj*_*jto 5 gremlin tinkerpop tinkerpop3 amazon-neptune gremlinpython
假设我想从数据库中获取一些顶点:
g.V(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
然后我有另一组顶点:
g.V(4, 5, 6)
Run Code Online (Sandbox Code Playgroud)
想象一下,这不仅仅是g.V(),而是一些更复杂的遍历来获取我的顶点。但遍历必须从 开始V(),因为我想从所有节点中进行选择。
我们还假设我想多次这样做。所以我可能想合并 7 个不同的结果集。每一种方法都可以采用完全不同的方式来获得结果。
现在我想将这两个结果合并到一个结果集中。我的第一个想法是:
g.V(1, 2, 3).fold().as('x').V(4, 5, 6).fold().as('x').select(all, 'x').unfold()
Run Code Online (Sandbox Code Playgroud)
但这行不通。第二次调用fold将清除我的“局部变量”,因为这是一个障碍步骤。
我目前的尝试是这样的:
g.V(1, 2, 3).fold().union(identity(), V(4, 5, 6).fold()).unfold()
Run Code Online (Sandbox Code Playgroud)
这可行,但看起来有点太复杂了。如果我想重复 7 次,这将是一个非常复杂的查询。
有没有更好的方法来完成两个不同查询结果的简单合并?
怎么样使用aggregate():
gremlin> g.V(1,2,3).aggregate('x').fold().V(4,5,6).aggregate('x').cap('x')
==>[v[1],v[2],v[3],v[4],v[5],v[6]]
gremlin> g.inject(1).union(V(1,2,3).aggregate('x'),V(4,5,6).aggregate('x')).cap('x')
==>[v[1],v[2],v[3],v[4],v[5],v[6]]
Run Code Online (Sandbox Code Playgroud)
您的问题中没有具体的遍历,因此我不得不提出一些人为的示例,但这里的要点是,您可以使用对aggregate()特定步骤的输出产生副作用,List您可以cap()在结束时将其输出您的遍历结果。