Groovy “如何分组”;匹配“;结果

Groovy “如何分组”;匹配“;结果,groovy,gremlin,tinkerpop,Groovy,Gremlin,Tinkerpop,我的问题是“如何对选择-ed项的匹配结果进行分组” 以下是我在图表中的结构和数据: 结构: 5种顶点:用户/体验/学校/公司/标签 5种边缘:学习/工作/学校/公司/说话 数据: 用户-[worked]-->体验-[company]-->公司 用户-[worked]-->体验-[company]-->公司 用户-[stidued]-->体验-[school]-->学校 用户-[stidued]-->体验-[school]-->学校 用户-[讲话(级别:x)]-->语言 用户-[讲话(级别:

我的问题是“如何对
选择
-ed项的
匹配
结果进行分组”

以下是我在图表中的结构和数据:

结构:

  • 5种顶点:
    用户
    /
    体验
    /
    学校
    /
    公司
    /
    标签
  • 5种边缘:
    学习
    /
    工作
    /
    学校
    /
    公司
    /
    说话
数据:

  • 用户-[worked]-->体验-[company]-->公司
  • 用户-[worked]-->体验-[company]-->公司
  • 用户-[stidued]-->体验-[school]-->学校
  • 用户-[stidued]-->体验-[school]-->学校
  • 用户-[讲话(级别:x)]-->语言
  • 用户-[讲话(级别:x)]-->语言
我已经用
匹配
重复数据消除
展开
写了一些接近我需要的东西

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]
我需要找到一个返回此类结果的查询:

==>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孵化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}]