如何在MongoDB中实现按日期及日期内productId字段分组统计
MongoDB按日期+productId分组统计实现方案
实现分为3个聚合阶段,具体操作如下:
完整聚合语句
db.collection.aggregate([ // 阶段1:按「格式化后的日期+productId」分组,统计单产品单日出现次数 { $group: { _id: { // 此处$createTime替换为你实际存储的日期字段名 // 若日期字段本身已是YYYY-MM-DD格式字符串,直接写date: "$你的日期字段名"即可 date: { $dateToString: { format: "%Y-%m-%d", date: "$createTime" } }, productId: "$productId" }, count: { $sum: 1 } } }, // 阶段2:按日期二次分组,收集当日所有产品的统计结果 { $group: { _id: "$_id.date", productList: { $push: { k: "$_id.productId", v: "$count" } } } }, // 阶段3:转换格式为目标输出结构 { $replaceRoot: { newRoot: { $mergeObjects: [ { _id: "$_id" }, { $arrayToObject: "$productList" } ] } } } ])
输出效果
和你预期的结构完全一致,示例输出:
[ { "_id": "2018-03-04", "product1": 2, "product2": 2 } ]
内容的提问来源于stack exchange,提问作者newbieeyo
相关产品推荐
相关产品推荐

