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

如何通过Mongo聚合框架按age字段筛选唯一文档?

MongoDB聚合实现按age字段筛选唯一文档

你可以通过$group结合$replaceRoot的聚合管道实现需求,核心逻辑是按age分组后保留每组的任意一个文档,再还原文档结构:

聚合管道代码

db.yourCollectionName.aggregate([
  {
    $group: {
      _id: "$age",
      uniqueDoc: { $first: "$$ROOT" }
    }
  },
  {
    $replaceRoot: { newRoot: "$uniqueDoc" }
  }
])

阶段说明

  • $group:以age作为分组依据,$first操作符会保留每组中最先被遍历到的完整文档($$ROOT指代当前处理的整个文档),确保每个age只对应一条记录。如果想保留每组最后一条文档,把$first换成$last即可。
  • $replaceRoot:将分组后嵌套在uniqueDoc里的原始文档提升为顶层文档,让输出结构和原集合文档格式一致。

输入示例

[
  { _id: ObjectId("123"), name: "john", age: 30 },
  { _id: ObjectId("456"), name: "moore", age: 45 },
  { _id: ObjectId("789"), name: "carl", age: 30 }
]

输出示例

[
  { _id: ObjectId("123"), name: "john", age: 30 },
  { _id: ObjectId("456"), name: "moore", age: 45 }
]

内容的提问来源于stack exchange,提问作者Mohammad Farhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:35:51