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

MongoDB聚合操作:如何选取每个分桶中的首个文档?

MongoDB聚合:在$bucket中获取每个分桶的首个文档

你已经通过$match过滤文档,再按createdOn倒序排序,现在要在$bucket阶段直接输出每个分桶的第一个文档,完全可以做到,具体写法如下:

完整聚合阶段代码

[
  { $match: { ...someFilters } },
  { $sort: { createdOn: -1 } },
  { 
    $bucket: { 
      groupBy: "$somePropertyInDoc",
      output: {
        firstDoc: { $first: "$$ROOT" }
      }
    } 
  }
]

关键说明

  • 因为你已经在$bucket前执行了$sort(按createdOn降序),所以进入分桶阶段的文档是按时间从新到旧排列的,每个分桶内的文档顺序也遵循这个规则。
  • $$ROOT是MongoDB聚合中的系统变量,代表当前处理的整个文档对象。
  • $first操作符会直接提取分桶内的第一个文档,也就是排序后的最新文档。

如果不需要完整文档,只想提取特定字段,也可以自定义投影内容,比如:

output: {
  firstDoc: {
    $first: {
      _id: "$_id",
      title: "$title",
      createdOn: "$createdOn"
    }
  }
}

内容的提问来源于stack exchange,提问作者Akshay Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 11:01:36