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

MongoDB如何按日期分组统计总销量及排除指定销售经理的自有销量

MongoDB 按日期分组统计实现方案

使用MongoDB聚合管道即可实现所有需求,完整查询代码如下:

// 替换为你需要排除的销售经理实际ObjectId值
const excludeManagerId = ObjectId("你的排除目标salesManagerId");

db.你的集合名.aggregate([
  {
    $group: {
      // 直接将日期格式化为YYYYMMDD格式作为分组键
      _id: { $dateToString: { format: "%Y%m%d", date: "$createdAt" } },
      // 统计分组内总文档数,等价于COUNT(*)
      Sales: { $sum: 1 },
      // 统计自有销量,排除包含指定销售经理ID的文档
      "Own Sales Volume": {
        $sum: {
          $cond: [
            { $not: { $in: [excludeManagerId, "$details.salesManagerId"] } },
            1,
            0
          ]
        }
      }
    }
  },
  {
    // 按日期倒序排列,最新日期在前
    $sort: { _id: -1 }
  },
  {
    // 调整输出字段名匹配预期格式
    $project: {
      _id: 0,
      Date: "$_id",
      Sales: 1,
      "Own Sales Volume": 1
    }
  }
])

关键逻辑说明

  • 日期分组通过$dateToString操作符直接实现,不需要手动拆分年/月/日再拼接,输出格式正好匹配你要求的20211020样式
  • 自有销量通过$cond条件判断实现:当details数组中不存在要排除的销售经理ID时计数+1,否则+0
  • 排序阶段直接对格式化后的日期字符串倒序,即可得到你需要的日期从新到旧的排列效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:54:01