数据分组和去重
Gremlin支持对数据进行分组和去重。
数据分组:从某个维度上对拥有相同点的数据进行分组,比如根据年龄分组、根据省市区分组等
数据去重:去除结果集中相同的元素,或者去除在某个维度上具有相同点的数据,比如根据每个年龄只显示一个人
需要用到的Step:
group():对结果集进行分组,可通过by(property)来指定根据什么维度进行分组,可称维度为分组键;如果不指定维度则以元素id作为分组键,相当于重复的元素被分为一组。每一组由分组键 + 组内元素列表构成。如果有需要也可以对每一组的元素列表进行reduce操作,依然使用by()语句,比如by(count())对组内元素计数groupCount():对结果集进行分组,并统计每一组的元素个数。每一组由分组键 + 组内元素数量构成dedup():去除结果集中相同的元素,可通过by(property)来指定根据什么维度进行去重by():语义上一般指“根据什么维度”,与上述语句配合使用,如group().by()、dedup().by()等,也可以与其他语句配合,如order().by()、path().by()等
使用group()对结果集进行分组:
默认根据id进行分组:
// 不指定任何维度// 默认根据id进行分组,即重复的元素分到一组g.V().hasLabel('person').group()g.V().both().hasLabel('person').group()
指定分组键:
// 根据age属性进行分组g.V().hasLabel('person').group().by('age')
分组并统计组内元素个数:
// 统计每个年龄的人数g.V().hasLabel('person').group().by('age').by(count())// 统计每个label下的顶点个数g.V().group().by(label).by(count())
使用groupCount()对结果集进行分组计数:
默认根据id进行分组:
// 不指定分组键// 默认根据id进行分组g.V().hasLabel('person').groupCount()g.V().both().hasLabel('person').groupCount()
指定分组键:
// 根据年龄进行分组计数g.V().hasLabel('person').groupCount().by('age')
使用dedup()对结果集进行去重:
// 对结果集进行去重g.V().both().hasLabel('person').dedup()// 从各个年龄的人中选出一个代表g.V().hasLabel('person').dedup().by('age')
