You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB如何一次性完成多条件下的聚合计数统计

MongoDB 多条件聚合计数实现方案

MongoDB 原生支持单次查询完成不同分组维度的计数统计,不需要拆分多次查询,针对你提出的按val字段值分类统计记录数的需求,使用聚合管道的$group阶段即可实现。

测试数据说明

你提供的测试集合结构如下:

_idnoval
11a
22a
33b
44c

预期统计目标:val=a共2条、val=b共1条、val=c共1条。

基础实现语句

假设你的集合名为your_collection,执行以下聚合语句即可得到目标结果:

db.your_collection.aggregate([
  {
    // 按val字段的值分组
    $group: {
      _id: "$val",
      // 每组逐条累加1,得到对应分组的记录总数
      record_count: { $sum: 1 }
    }
  }
])

返回结果

语句执行后的返回内容如下,和你的预期完全匹配:

[
  { "_id": "a", "record_count": 2 },
  { "_id": "b", "record_count": 1 },
  { "_id": "c", "record_count": 1 }
]

扩展:输出键值对格式结果

如果你需要更直观的、以val值为键的统计结果,可以在聚合管道中追加阶段调整输出结构:

db.your_collection.aggregate([
  {
    $group: {
      _id: "$val",
      count: { $sum: 1 }
    }
  },
  {
    $replaceRoot: {
      newRoot: { $arrayToObject: [[{ k: "$_id", v: "$count" }]] }
    }
  }
])

该语句返回格式为:

{ "a": 2, "b": 1, "c": 1 }

如果后续需要实现更复杂的跨条件统计(比如同时统计val为a的数量、no大于2的数量、val为c的数量这类不同规则的并行计数),可以使用$facet阶段在单次查询中完成多维度统计,避免多次和数据库交互产生额外开销。

内容的提问来源于stack exchange,提问作者Julia5049

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.13 16:15:55