首页 > 解决方案 > Mongo DB 中的类别计数

问题描述

我在 MongoDB Collection 中的数据是:

{ type : "bike", name : "honda" },
{ type : "car", name : "Audi } ,
{ type : "truck", name : "mercedes"},
{ type : "bike", name : "suzuki" },
{ type : "bike", name : "yamaha" },
{ type : "car", name : "tesla"}

我希望输出为:

{ bike : 3 },
{ car : 2 },
{ truck : 1}

我无法通过阅读文档来做到这一点。欢迎任何帮助。

标签: mongodbnosqlaggregation-framework

解决方案


  • $group按类型并获取重复项的总和,
  • $arrayToObject将 k 和 v 格式数组转换为对象
  • $replaceRoot将上面转换的对象替换为根
db.collection.aggregate([
  {
    $group: {
      _id: "$type",
      count: { $sum: 1 }
    }
  },
  {
    $replaceRoot: {
      newRoot: {
        $arrayToObject: [
          [{ k: "$_id", v: "$count" }]
        ]
      }
    }
  }
]).toArray();

操场


推荐阅读