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

MongoDB如何基于嵌套文档内的package_id字段实现分组聚合

MongoDB 按嵌套字段分组聚合实现

你的collection1_document集合中package是直接嵌套在文档内的对象字段,不需要执行跨集合关联,直接取嵌套字段路径作为分组键即可完成聚合。

基础分组语句(统计每个package_id对应的文档数量)

直接在聚合的$group阶段指定_id为$package.package_id,就能按嵌套的package_id值完成分组:

db.collection1_document.aggregate([
  {
    $group: {
      // 分组键:指向嵌套的package.package_id字段
      _id: "$package.package_id",
      // 统计当前分组下的文档总条数
      total_count: { $sum: 1 },
      // 可选:收集当前分组下所有文档的_id
      related_doc_ids: { $push: "$_id" },
      // 可选:取当前分组下第一个文档的package名称(同package_id对应name固定时可用)
      package_name: { $first: "$package.name" }
    }
  }
])

常见扩展用法

  • 分组前过滤无效数据:在$group前新增$match阶段,排除package字段不存在、package_id为空的无效文档
db.collection1_document.aggregate([
  {
    $match: {
      "package.package_id": { $exists: true, $ne: "" }
    }
  },
  {
    $group: {
      _id: "$package.package_id",
      total_count: { $sum: 1 }
    }
  }
])
  • 关联独立package集合补充属性:如果需要取package集合中存储的更多包维度属性,可在分组后新增$lookup阶段做关联,仅按当前文档内嵌套的package_id分组的场景不需要该步骤。

内容的提问来源于stack exchange,提问作者Mert Öztürk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:15:35