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

如何统计MotherCard集合中列表内每部电影的文档数量?

统计MongoDB集合中指定电影各自的文档数量

你当前的代码用countDocuments配合$in,会返回所有匹配列表中任意电影的文档总数量,而非每部电影的独立计数。如果你的代码仅返回第一个元素的数量,大概率是数据或环境的特殊情况,但要实现「统计列表中每部电影各自的文档数」,正确方案是使用MongoDB的聚合框架:

const list = ['Frozen 2013', 'Oblivion 2013', 'Avatar 2009'];

const movieCounts = await db.MotherCard.aggregate([
  // 过滤出列表内的电影文档
  { $match: { movie: { $in: list } } },
  // 按movie字段分组,统计每组的文档数量
  { $group: { _id: '$movie', count: { $sum: 1 } } },
  // 可选:将_id重命名为movie,让结果结构更直观
  { $project: { movie: '$_id', count: 1, _id: 0 } }
]);

console.log(movieCounts);

这段代码会返回一个数组,每个元素对应一部电影的名称及对应的文档数,示例输出:

[
  { movie: 'Frozen 2013', count: 15 },
  { movie: 'Oblivion 2013', count: 8 },
  { movie: 'Avatar 2009', count: 22 }
]

如果需要结果顺序和原列表完全一致,且包含无匹配文档的电影(count为0),可以在聚合后补充排序逻辑:

// 按原列表顺序整理结果
const orderedCounts = list.map(movieName => {
  const matchedItem = movieCounts.find(item => item.movie === movieName);
  return { movie: movieName, count: matchedItem ? matchedItem.count : 0 };
});

console.log(orderedCounts);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 04:00:05