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

MongoDB多嵌套数组大小统计:诗歌集各诗歌的幕与场次计数求助

解决MongoDB诗歌集合的幕与场次统计问题

别担心,我来帮你搞定这个统计需求!首先得先明确下你的poems集合中文档的嵌套结构——我先假设是最常见的场景:每首诗文档里包含一个acts数组,每个act对象又嵌套了scenes数组(如果你的实际结构有差异,随时补充细节我再调整方案)。

聚合查询实现统计

直接用MongoDB的聚合管道就能精准统计每首诗对应的幕数和总场次,给你写好示例代码:

db.poems.aggregate([
  // 新增字段计算幕数和总场次
  {
    $addFields: {
      act_count: { $size: "$acts" }, // 统计acts数组长度,就是幕的数量
      total_scenes: {
        $sum: {
          $map: {
            input: "$acts",
            as: "single_act",
            in: { $size: "$$single_act.scenes" } // 遍历每个幕,统计其场次数量后求和
          }
        }
      }
    }
  },
  // 可选:筛选保留需要的字段(比如诗歌标题、幕数、总场次)
  {
    $project: {
      _id: 0,
      title: 1,
      act_count: 1,
      total_scenes: 1
    }
  }
])

关键逻辑说明

  • $size:MongoDB专门用来获取数组长度的操作符,直接对$acts使用就能得到这首诗的幕数;
  • $map + $sum:先遍历每一个幕,计算该幕下scenes数组的长度(也就是单幕的场次数量),再用$sum把所有幕的场次数量加总,得到整首诗的总场次;
  • 如果你的文档结构不同(比如每个act里直接存了scene_count数字字段,而不是scenes数组),那总场次可以简化成$sum: "$acts.scene_count",更高效。

要是你之前的查询结果不对,可以把你写过的代码或者实际的文档结构片段贴出来,我帮你排查问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:27:03