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

MongoDB查询中如何分组保留指定字段并实现数据去重

你之前使用的$project仅能做字段筛选映射,没有去重能力,所以会返回重复条目,需求可以直接通过聚合的$group阶段实现,不需要结合distinct函数。

针对你提供的示例数据,符合预期输出的查询语句如下:

db.collection.aggregate([
  {
    $group: {
      _id: "$code",
      libelle: { $first: "$libelle" }
    }
  }
])

逻辑说明

  • $group阶段以code字段作为分组依据,同一code的所有文档会被合并为一个分组,分组的_id就是code的值,天然保证结果的_id唯一无重复
  • 因为同一个code对应的libelle值完全一致,所以用$first操作符取分组内第一条文档的libelle值即可,你也可以根据需求换成$last,返回结果不会有差异

如果你需要调整返回字段的命名,比如不想用_id作为code的键,可以额外增加一个$project阶段调整输出结构:

db.collection.aggregate([
  {
    $group: {
      _id: "$code",
      libelle: { $first: "$libelle" }
    }
  },
  {
    $project: {
      libelle: 1,
      code: "$_id",
      _id: 0
    }
  }
])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 06:36:05