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

如何在MongoDB中按月份对数据进行分组?

MongoDB按月份(英文全称)分组查询方案

你可以使用MongoDB的聚合框架实现按月份分组的需求,具体查询语句如下:

db.your_collection_name.aggregate([
  // 新增月份数字和英文全称字段,用于分组和排序
  {
    $addFields: {
      monthNum: { $month: "$date" },
      monthName: { $dateToString: { format: "%B", date: "$date" } }
    }
  },
  // 按月份全称分组,收集对应数据到data数组
  {
    $group: {
      _id: "$monthName",
      monthNum: { $first: "$monthNum" },
      data: {
        $push: {
          _id: "$_id",
          userId: "$userId",
          gameType: "$gameType",
          score: "$score",
          winningPosition: "$winningPosition",
          winningAmount: "$winningAmount",
          date: "$date",
          userName: "$userName"
        }
      }
    }
  },
  // 按月份数字倒序,让较新的月份排在前面
  {
    $sort: { monthNum: -1 }
  },
  // 调整输出结构,符合需求格式
  {
    $project: {
      _id: 0,
      month: "$_id",
      data: 1
    }
  }
])

语句说明:

  1. $addFields阶段:从date字段提取月份数字(monthNum)和英文全称(monthName),前者用于后续排序,后者作为分组依据。
  2. $group阶段:以monthName为分组键,将每个分组内的原始文档(排除新增的临时字段)收集到data数组中,同时保留monthNum用于排序。
  3. $sort阶段:按monthNum降序排列,确保十月(10)排在九月(9)之前。
  4. $project阶段:重命名分组键为month,移除默认的_id字段,输出目标结构。

注意:将语句中的your_collection_name替换为你的实际集合名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:57:21