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

Mongoose中如何按date字段分组并统计各分组的rating平均值

代码修改方案

你当前的聚合查询里$group阶段的_id设置为null,代表将所有匹配的文档统一合并为一组统计,只要将_id指定为你要分组的字段$date即可实现按日期分组统计:

Post.aggregate([
  {
    $group: {
      _id: "$date", // 按date字段的值分组
      avgRating: { $avg: "$rating" },
      postCount: { $sum: 1 } // 可选:额外统计当日post总数,按需添加
    }
  },
  {
    $sort: { _id: 1 } // 可选:按日期升序排列结果,如需倒序改为-1
  }
])
.then(function (res) {
  // 此时res是数组,每一项对应一个日期的统计结果,结构如下:
  // [{ _id: '2024-05-20', avgRating: 4.2, postCount: 12 }, ...]
  res.forEach(item => {
    console.log(`日期${item._id}的平均评分:${item.avgRating}`)
  })
})

注意事项

  • 如果你的date字段存储的是带时分秒的时间字符串,会精确到时分秒分组,如果你需要按天分组但字符串格式包含更细粒度的时间,需要先通过$dateToString之类的操作统一格式化日期(你这里Schema的default是格式化后的当天日期,所以直接用$date分组即可)
  • 统计返回的avgRating默认是浮点数,你可以按需用$round操作保留指定小数位数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:06:05