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

MongoDB聚合查询异常:无法统计电影最多上映年份

解决MongoDB嵌套数组电影数据的年份统计问题

你的问题出在所有电影数据都嵌套在docs数组中,而原始聚合查询直接在顶层文档上分组,顶层文档并没有year字段,所以返回了_id: null且计数为1(因为只有1个顶层文档)。

正确的查询需要先将docs数组拆分为单个文档,再进行分组统计:

db.movies.aggregate([
  // 拆分数组,将每个电影对象转为独立文档
  { "$unwind": "$docs" },
  // 按电影的year字段分组,统计每年的电影数量
  { "$group": { "_id": "$docs.year", "moviecount": { "$sum": 1 } } },
  // 按电影数量降序排序(最多的在前)
  { "$sort": { "moviecount": -1 } },
  // 只取第一条结果(数量最多的年份)
  { "$limit": 1 }
])

各阶段说明:

  • $unwind: 将docs数组中的每个元素展开为单独的文档,这样每个电影都成为一个独立的处理单元。
  • $group: 以每个电影的year字段为分组依据,累加统计每年的电影数量。
  • $sort: 按统计出的moviecount降序排列,确保数量最多的年份排在第一位。
  • $limit: 只返回排序后的第一条结果,即电影数量最多的年份。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:55:18