You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:27:07