在Gremlin中合并多个查询的结果

在Gremlin中合并多个查询的结果,gremlin,tinkerpop,tinkerpop3,amazon-neptune,gremlinpython,Gremlin,Tinkerpop,Tinkerpop3,Amazon Neptune,Gremlinpython,假设我想从数据库中获取几个顶点: g.V(1, 2, 3) 然后我有另一组顶点: g.V(4, 5, 6) 想象一下,这不仅仅是g.V(),而是更复杂的遍历来获取顶点。但是遍历必须从V()开始,因为我想从所有节点中进行选择 让我们假设我想做很多次。所以我可能想合并7个不同的结果集每种方法都可以有完全不同的方法来获得结果。 现在我想把这两个结果合并成一个结果集。我的第一个想法是: g.V(1, 2, 3).fold().as('x').V(4, 5, 6).fold().as('x').se

假设我想从数据库中获取几个顶点:

g.V(1, 2, 3)
然后我有另一组顶点:

g.V(4, 5, 6)
想象一下,这不仅仅是
g.V()
,而是更复杂的遍历来获取顶点。但是遍历必须从
V()
开始,因为我想从所有节点中进行选择

让我们假设我想做很多次。所以我可能想合并7个不同的结果集每种方法都可以有完全不同的方法来获得结果。


现在我想把这两个结果合并成一个结果集。我的第一个想法是:

g.V(1, 2, 3).fold().as('x').V(4, 5, 6).fold().as('x').select(all, 'x').unfold()
但这不起作用。第二次调用
fold
将清除我的“局部变量”,因为这是一个障碍步骤

我目前的尝试是:

g.V(1, 2, 3).fold().union(identity(), V(4, 5, 6).fold()).unfold()
这是可行的,但看起来有点太复杂了。如果我想重复7次,这将是一个非常复杂的查询


有没有更好的方法来完成两个不同查询结果的简单合并?

使用
aggregate()
如何:


您的问题中没有具体的遍历,因此我不得不提出一些人为的示例,但这里的要点是您可以使用
aggregate()
将特定步骤的输出副作用到
列表中,您可以
cap()
结果是在遍历结束时退出。

我的建议是您当前的方法,实际上,我不认为这会比任何其他解决方案更复杂。事实上,我认为无论添加多少分支,它都保持相当简单

g.V(1, 2, 3).fold().
  union(identity(),
        V(4, 5, 6).fold(),
        V(7, 8, 9).fold(),
        ...).unfold()
g.V(1, 2, 3).fold().
  union(identity(),
        V(4, 5, 6).fold(),
        V(7, 8, 9).fold(),
        ...).unfold()