gremlin中的聚合项目结果

gremlin中的聚合项目结果,gremlin,Gremlin,我得到了一个可以通过以下DSL构建的示例组: g.addV('M').property(id, 'm1') g.addV('A').property('pka', 'x').addE('e1').to(V('m1')) g.addV('A').property('pka', 'y').addE('e1').to(V('m1')) g.addV('D').property('pkb', 'z').addE('e2').to(V('m1')) g.addV('M').property(id, 'm2

我得到了一个可以通过以下DSL构建的示例组:

g.addV('M').property(id, 'm1')
g.addV('A').property('pka', 'x').addE('e1').to(V('m1'))
g.addV('A').property('pka', 'y').addE('e1').to(V('m1'))
g.addV('D').property('pkb', 'z').addE('e2').to(V('m1'))
g.addV('M').property(id, 'm2')
g.addV('A').property('pka', 'p').addE('e1').to(V('m2'))
g.addV('D').property('pka', 'q').addE('e1').to(V('m2'))
我想从“M”顶点遍历,得到外连通顶点属性的聚合结果。现在,我可以使用:

g.V().hasLabel('M').
project('A', 'B').
    by(__.in('e1').values('pka').fold()).
        by(__.in('e2').values('pkb').fold())
要获得结果,请执行以下操作:

==>[A:[x,y],B:[z]]
==>[A:[q,p],B:[]]
希望汇总这些结果并最终获得:

==>[A:[x,y,q,p],B:[z]]

非常感谢您的帮助。

您可以通过对结果进行分组,从原始查询中实现这一点:

g.V().hasLabel('M').
project('A', 'B').
by(__.in('e1').values('pka').fold()).
by(__.in('e2').values('pkb').fold()).
unfold().group().by(select(keys)).by(select(values).unfold().fold())
或者您可以在
项目
步骤之前使用
折叠

g.V().hasLabel('M').
fold().
project('A', 'B').
by(unfold().in('e1').values('pka').fold()).
by(unfold().in('e2').values('pkb').fold())
我在这里测试了两种解决方案: