gremlin中的聚合项目结果
我得到了一个可以通过以下DSL构建的示例组: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
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())
我在这里测试了两种解决方案: