如何对 "match" 个结果进行分组

How to group "match" results

我的问题是 "how to group the match results" 个 select 编辑的项目?

这是我图表中的结构和数据:

结构:

数据:

我已经用 matchdedupunfold

写了一些接近我需要的东西
g.V(16520).match(
  __.as('user'),
  __.as('user').out('worked').as('workExperiences'),
  __.as('user').out('studied').as('schoolExperiences'),
  __.as('workExperiences').out('company').as('company'),
  __.as('schoolExperiences').out('school').as('school'),
  __.as('user').outE('speaks').as('a').values('level').as('level').select('a').inV().values('name').as('language').select('level', 'language').as('languages')
).select('user', 'schoolExperiences', 'school', 'workExperiences', 'company', 'languages')
.unfold().dedup()

这是这个查询给我的结果:

==>user=v[16520]
==>schoolExperiences=v[4184]
==>school=v[4232]
==>workExperiences=v[12496]
==>company=v[8320]
==>languages={level=6, language=DEU}
==>languages={level=3, language=FRA}
==>schoolExperiences=v[16424]
==>school=v[4136]
==>workExperiences=v[16512]
==>company=v[4176]

我需要找到 return 这种结果的查询:

==>user=[v[16520]]
==>languages=[{level=6, language=DEU},{level=3, language=FRA}]
==>workExperiences=[v[12496], v[16512]]
==>schoolExperiences=[v[4184], v[16424]]
==>company=[v[4176], v[8320]]
==>school=[v[4136], v[4232]]

我找不到解决办法。

如有任何建议,我们将不胜感激:)

感谢阅读

F.

PS : 我是 运行 v3.0.1-incubating Tinkerpop 版本

感谢@DanielKuppitz,这是我需要的解决方案:

g.V(16520).as('user').match(
        __.as('user').out('worked').as('experience').out('company').as('companyId').select('experience', 'companyId').fold().as('tmpWorkExperiences'),
        __.as('user').out('studied').as('experience').out('school').as('schoolId').select('experience', 'schoolId').fold().as('tmpSchoolExperiences'),
        __.as('user').outE('speaks').as('level').inV().as('language').select('level', 'language').by('level').by('name').fold().as('languages')
    ).select('tmpWorkExperiences').map(unfold().select('experience', 'companyId').by().by(id).fold()).as('workExperiences').
select('tmpWorkExperiences').map(unfold().select('companyId').fold()).as('company').
select('tmpSchoolExperiences').map(unfold().select('experience', 'schoolId').by().by(id).fold()).as('schoolExperiences').
select('tmpSchoolExperiences').map(unfold().select('schoolId').fold()).as('school').
select('workExperiences', 'schoolExperiences', 'company', 'school', 'languages').unfold()

结果如下:

==>workExperiences=[{experience=v[12496], companyId=8320}, {experience=v[16512], companyId=4176}]
==>schoolExperiences=[{experience=v[4184], schoolId=4232}, {experience=v[16424], schoolId=4136}]
==>company=[v[8320], v[4176]]
==>school=[v[4232], v[4136]]
==>languages=[{level=6, language=DEU}, {level=3, language=FRA}]