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

MongoDB分组排序查询:按国家分组按州数排序组内按病例排序

字段映射说明

先确认你MongoDB集合的字段和示例数据对应关系,以下查询默认使用字段名:

  • 国家:country
  • 州:state
  • 人口密度(人/km²):ppd
  • 病例数(百万):cases
    如果你的实际字段名不同,替换查询里对应的字段名即可。

优化后的MongoDB聚合查询语句

db.你的集合名.aggregate([
  // 第一步:先按病例数降序排序,后续分组时直接存入数组即可保证组内顺序,性能更高
  { $sort: { cases: -1 } },
  // 第二步:按国家分组,统计州数量、组装州明细数组
  {
    $group: {
      _id: "$country",
      num_states: { $sum: 1 },
      states: {
        $push: {
          State: "$state",
          Cases: "$cases",
          PPD: "$ppd"
        }
      }
    }
  },
  // 第三步:按州的数量降序排序国家分组
  { $sort: { num_states: -1 } },
  // 第四步:格式化输出字段,组装成要求的结构
  {
    $project: {
      _id: 0,
      country: "$_id",
      num_states: 1,
      states: 1
    }
  },
  // 第五步:把所有结果包装到results数组里,符合最终输出格式
  {
    $group: {
      _id: null,
      results: { $push: "$$ROOT" }
    }
  },
  { $project: { _id: 0 } }
])

优化点说明

  1. 提前排序:在分组前先对全量数据按cases降序排序,避免分组后再通过$unwind拆分数组、排序、再$group组装的冗余操作,数据量越大性能优势越明显
  2. 字段投影精简:提前过滤不需要的字段,减少数据传输和处理开销

内容的提问来源于stack exchange,提问作者Vaibhav Thakkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:15:02