首页 > 解决方案 > 根据 mongo db 中的 group by 字段获取所有记录作为列表

问题描述

例如,我有如下文件:

{ "_id" : ObjectId("5ef0f23647c2b4dbae99105c"), "subcategory_name" : "ENTERPRISE ASSET MANAGEMENT", "category_id" : ObjectId("5ef0ec5547c2b4dbae990e9d"), "category_name" : "ERP", "status" : 0 }

{ "_id" : ObjectId("5ef0f23647c2b4dbae991062"), "subcategory_name" : "ENVIRONMENTAL HEALTH AND SAFETY SOFTWARE", "category_id" : ObjectId("5ef0ec5547c2b4dbae990e9d"), "category_name" : "ERP", "status" : 0 }

然后我想要这样的结果:

{
    "category_id": ObjectId("5ef0ec5547c2b4dbae990e9d"),
    "category_name": "ERP",
    "subcategory_list": [
      {"_id": ObjectId("5ef0f23647c2b4dbae99105c"), "subcategory_name": "ENTERPRISE ASSET MANAGEMENT"},
      {"_id": ObjectId("5ef0f23647c2b4dbae991062"), "subcategory_name": "ENVIRONMENTAL HEALTH AND SAFETY SOFTWARE"}
    ]
}

标签: mongodb

解决方案


您可以使用它group来执行此操作

[
  {
    $group: {
      _id: "$category_id",
      category_id: {
        "$first": "$category_id"
      },
      category_name: {
        $first: "$category_name"
      },
      subcategory_list: {
        $addToSet: {
          _id: "$_id",
          subcategory_name: "$subcategory_name",
          
        }
      }
    }
  },
  {
    $project: {
      _id: 0
    }
  }
]

工作Mongo游乐场


推荐阅读