如何使用聚合找到具有两列的不同字段 MongoDB

How to find Distinct Field with two column using Aggegation MongoDB

我有带组的类别代码和类别名称以及带数组的其他字段组。 示例数据-

[
   {
      "categoryCode":"categoryCode1",
      "categoryName":"categoryName1",
      "cat_type":A
   },
   {
      "categoryCode":"categoryCode1",
      "categoryName":"categoryName1",
      "cat_type":B
   },
   {
      "categoryCode":"categoryCode2",
      "categoryName":"categoryName2",
      "cat_type":B
   }
]

和预期输出:

[
   {
      "categoryCode":"categoryCode1",
      "categoryName":"categoryName1",
      "cat_type":[A,B]
   },
   {
      "categoryCode":"categoryCode2",
      "categoryName":"categoryName2",
      "cat_type":[B]
   }
]

如何实现具有不同价值的目标。

对相应字段使用 $group 聚合阶段和 $addToSet 运算符。

db.collection.aggregate([
  {
    "$group": {
      "_id": {
        "categoryCode": "$categoryCode",
        "categoryName": "$categoryName",
        
      },
      "cat_type": {
        "$addToSet": "$cat_type"
      }
    },
    
  },
  {
    "$project": {
      "_id": 0,
      "categoryCode": "$_id.categoryCode",
      "categoryName": "$_id.categoryName",
      "cat_type": "$cat_type"
    }
  },
  
])

Mongo Playground Sample Execution