如何在特定字段 MongoDB 中找到不同的文档编号并在 Java 中实施

How to find Distinct No of Document on specific field MongoDB and Implement in Java

我有数据,需要按两个字段分组,并作为响应显示唯一字段以及该字段上的计数。

示例数据:

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

预期输出:

[
   {
      "categoryCode":"categoryCode1",
      "categoryName":"categoryName1",
      "cat_count": 2
   },
   {
      "categoryCode":"categoryCode2",
      "categoryName":"categoryName2",
      "cat_count": 1
   }
]

以及如何在 Java 中使用聚合对象实现它。

GroupOperation groupOperation = Aggregation.group("categoryCode", "categoryName").sum(1).as("cat_count"); 

但出现编译错误:

1 is not taken inside sum method

  1. $group - 按 categoryCodecategoryName 分组。并在与组匹配时为 $sum 添加聚合字段 cat_count
  2. $project - 显示所需输出字段的文档。
db.collection.aggregate([
  {
    $group: {
      _id: {
        "categoryCode": "$categoryCode",
        "categoryName": "$categoryName"
      },
      "cat_count": {
        $sum: 1
      }
    }
  },
  {
    $project: {
      "_id": 0,
      "categoryCode": "$_id.categoryCode",
      "categoryName": "$_id.categoryName",
      "cat_count": "$cat_count"
    }
  }
])

Sample Mongo Playground