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

MongoDB按日期分组统计:实现字段在指定数组内/外及总计数

实现MongoDB按日期分组统计指定字段的匹配与非匹配数量

可以通过MongoDB的聚合管道来实现需求,核心利用$group分组统计结合条件判断,再通过$addFields计算非匹配数量,具体实现如下:

完整聚合查询代码

db.your_collection_name.aggregate([
  {
    $group: {
      _id: "$date",
      count: { $sum: 1 },
      in_array: {
        $sum: {
          $cond: [
            { $in: ["$field", ["A", "D", "E"]] }, // 替换为你的目标数组
            1,
            0
          ]
        }
      }
    }
  },
  {
    $addFields: {
      not_in_array: { $subtract: ["$count", "$in_array"] }
    }
  }
])

各阶段说明

  • $group 分组统计

    • 以date字段作为分组依据(_id: "$date")
    • count字段通过$sum:1累加每组的总记录数
    • in_array字段使用$cond条件判断:借助$in运算符检查当前文档的field值是否在指定数组内,符合条件则累加1,否则累加0,最终得到每组中匹配数组的记录数
  • $addFields 计算非匹配数量

    • 新增not_in_array字段,通过总记录数count减去匹配数in_array,直接得到每组中不在目标数组内的记录数

执行上述查询后,就能得到你期望的输出格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:57:11