在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()