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

如何在MongoDB中按指定字段分组并返回含子列表的记录集

MongoDB按指定字段分组并将子记录整理为列表

要实现你需要的按category_id和category_name分组,把对应子类别记录整理为列表的需求,你可以使用MongoDB的聚合管道,结合$group和$project操作符来完成。

完整聚合查询代码

db.yourCollectionName.aggregate([
  // 第一步:按类别字段分组,收集子类别列表
  {
    $group: {
      _id: {
        category_id: "$category_id",
        category_name: "$category_name"
      },
      subcategory_list: {
        $push: {
          _id: "$_id",
          subcategory_name: "$subcategory_name"
        }
      }
    }
  },
  // 第二步:调整输出结构,让类别字段成为顶级属性
  {
    $project: {
      _id: 0,
      category_id: "$_id.category_id",
      category_name: "$_id.category_name",
      subcategory_list: 1
    }
  }
])

代码解释

  • $group阶段:

    • 我们把category_id和category_name组合作为分组的_id键,确保同一类别的记录会被分到一组。
    • 使用$push操作符,将每个子类别文档中的_id和subcategory_name字段打包成对象,添加到subcategory_list数组中,这样就把同一类别的所有子类别都收集起来了。
  • $project阶段:

    • 这里是为了调整输出的结构,把_id中存储的category_id和category_name提取为顶级字段,同时移除默认的_id字段,让最终输出和你期望的格式完全一致。

注意:记得把代码中的yourCollectionName替换成你实际使用的集合名称哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 14:37:37