我试图计算某个特定值在集合中出现的次数.

{
  _id:1,
  field1: value,
  field2: A,
}

{
  _id:2,
  field1: value,
  field2: A,
}

{
  _id:3,
  field1: value,
  field2: C,
}

{
  _id:4,
  field1: value,
  field2: B,
}

我想要的是计算A、B和C出现的次数,然后返回计数.

我想要的输出

{
  A: 2,
  B: 1,
  C: 1,
}

推荐答案

利用$arrayToObject操作符和最终$replaceWith管道来获得所需的结果.您需要运行以下聚合管道:

db.collection.aggregate([
    { $group: {
        _id: { $toUpper: '$field2' },
        count: { $sum: 1 }
    } },
    { $group: {
        _id: null,
        counts: { 
            $push: { k: '$_id', v: '$count' }
        }
    } },
    { $replaceWith: { $arrayToObject: '$counts' } }    
])

Mongo Playground


Mongodb相关问答推荐

将消息流式传输到WebSocket

如何在Mongo中查找数组中的特定对象

无法通过管理邮箱/密码身份验证注册/登录新用户帐户(类型错误:加载失败)

MongoDB DB参考返回null值

mongoDB文档数组字段中的唯一项如何

MongoDB - 家庭作业(job)帮助.不确定如何在 mongodb 中访问文档中的变量

Mongo:查找具有 0 个关联文档的文档,成本更低

在 MongoDB 中使用 findOneAndUpdate 有条件地更新/更新嵌入式数组

如何替换mongodb中的动态键?

Mongo:投影不影响布尔值

MongoDB 到 Snowflake 连续加载

mongo.lock 文件有什么用?

为什么 MongoDB 配置服务器必须只有一个或三个?

.save() 不是函数 Mongoose

从性能Angular 来看 MongoDB 嵌入式与参考

使用已排序的数据获取不同的值

MongoDB - 我如何找到另一个集合中的文档未引用的所有文档

mongodb:upserting:仅在插入文档时设置值

如何匹配 MongoDB 聚合框架中的 undefined值?

MongoDb 聚合 $match 错误:Arguments must be aggregate pipeline operators