You need to enable JavaScript to run this app. 如何从MongoDB数据中按日期统计每个唯一字段的对应数量
优惠活动
大模型
产品
解决方案
定价
更多

如何从MongoDB数据中按日期统计每个唯一字段的对应数量

MongoDB按月份统计各科目出现次数方案

你可以直接使用MongoDB的聚合管道完成该统计需求,完整查询语句如下:

// 请将集合名student替换为你实际的学生集合名称
db.student.aggregate([
  // 按月份+科目双维度分组,统计每个科目在对应月份的出现次数
  {
    $group: {
      _id: {
        Date: "$Date",
        Subject: "$Subject"
      },
      count: { $sum: 1 }
    }
  },
  // 按月份收拢同月份的所有科目统计数据
  {
    $group: {
      _id: "$_id.Date",
      subjectKV: {
        $push: {
          k: "$_id.Subject",
          v: "$count"
        }
      }
    }
  },
  // 格式化输出为要求的结构
  {
    $project: {
      _id: 0,
      // 如果存储的Date本身为数字类型,可删除$toInt转换逻辑
      Date: { $toInt: "$_id" },
      Subject: { $arrayToObject: "$subjectKV" }
    }
  },
  // 可选:按月份升序排列结果
  { $sort: { Date: 1 } }
])

方案说明:

  • 首次分组以日期+科目作为分组条件,先计算出每个科目在对应月份的总出现次数
  • 二次分组以日期作为唯一分组条件,将同一月份的所有科目和对应计数整理为键值对数组
  • 最后通过$arrayToObject操作符将键值对数组转为要求的嵌套对象格式,同时调整输出字段的类型和结构

注意:$arrayToObject为MongoDB 3.4.4版本新增的操作符,如果你使用的版本低于该版本,可以直接取二次分组的结果在应用层做格式转换即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 20:27:03