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

MongoDB v5.0:如何在$slice前对Countries数组排序取销量Top5国家?

解决MongoDB聚合中按销量排序后取前5个国家的问题

要解决这个问题,你可以在MongoDB 5.0中使用$sortArray操作符,先对Countries数组按sales降序排序,再执行$slice截取前5个元素。修改后的$project阶段代码如下:

"$project": {
  "Region": 1,
  "TotalSales": 1,
  "Countries": {
    "$slice": [
      {
        "$sortArray": {
          "input": "$Countries",
          "sortBy": { "sales": -1 }
        }
      },
      5
    ]
  }
}

代码说明

  • $sortArray的input参数指定要排序的目标数组$Countries,sortBy中的"sales": -1表示按销量从高到低降序排列(如果需要升序则改为1)
  • 排序完成后,$slice会从排序后的数组中截取前5个元素,最终得到每个地区销量排名前5的国家

补充说明

如果存在多个国家销量相同的情况,你可以在sortBy中添加额外排序字段来保证结果的稳定性,比如按国家名称升序排序:

"sortBy": { "sales": -1, "name": 1 }

内容的提问来源于stack exchange,提问作者sandeep.kgp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:05:17