Gremlin对group by分组结果按分组参数排序的实现咨询
Gremlin分组排序查询实现方案
测试数据
g.addV("machine").property("type","PC").property("age",2) g.addV("machine").property("type","PC").property("age",11) g.addV("machine").property("type","Mac").property("age",2) g.addV("machine").property("type","Mac").property("age",2) g.addV("machine").property("type","Mac").property("age",11)
实现语句
支持传入任意数量的分组字段,以下以age、type作为分组参数示例:
方案1:输出带字段名的分组key
g.V().hasLabel("machine") .group().by(valueMap("age","type").order(local).by(keys)) .order(local).by(select(keys).select("age"), asc).by(select(keys).select("type"), asc) .unfold()
输出结果匹配你要求的第一种格式:
==>{age=[2], type=[Mac]}=[{type=[Mac], age=[2]}, {type=[Mac], age=[2]}] ==>{age=[2], type=[PC]}=[{type=[PC], age=[2]}] ==>{age=[11], type=[Mac]}=[{type=[Mac], age=[11]}] ==>{age=[11], type=[PC]}=[{type=[PC], age=[11]}]
方案2:输出仅属性值的分组key
g.V().hasLabel("machine") .group().by(values("age","type").fold()) .order(local).by(keys) .unfold()
输出结果匹配你要求的第二种格式:
==>[2, Mac]=[{type=[Mac], age=[2]}, {type=[Mac], age=[2]}] ==>[2, PC]=[{type=[PC], age=[2]}] ==>[11, Mac]=[{type=[Mac], age=[11]}] ==>[11, PC]=[{type=[PC], age=[11]}]
动态调整说明
需要修改分组参数时,直接替换valueMap()或者values()中的字段列表即可,排序逻辑会自动适配传入的字段顺序,无需修改其他代码。
内容的提问来源于stack exchange,提问作者user3757753
相关产品推荐
相关产品推荐

