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

MongoDB聚合中$lookup结合$addFields的$regex匹配失效及学生数统计

MongoDB聚合:为每个群组统计学生数量

你只需要在现有聚合管道的末尾添加一个$addFields阶段,用$size操作符计算student数组的长度,就能得到每个群组的学生数量。修改后的完整聚合代码如下:

[
  // 将群组_id转为字符串,匹配学生的mainGroups字段
  {$addFields: {
    gid: {$toString:"$_id"}  
  }},
  {$project: {
     _id: 1,
     gid: 1,
     title:1
  }},
  { 
   $lookup: {
    "from": 'students',
    "let": {"groupId": "$gid"},
    pipeline: [
      {"$match": 
        {"$expr" :  
          {"mainGroups":{"$regex": "$$groupId", "$options" :"i"}}
        }
      }
    ],
    as: "student"
   }
  },
  // 新增阶段:统计学生数量
  {$addFields: {
    studentCount: {$size: "$student"}
  }}
]

补充说明

  • $size: "$student"会直接计算student数组的元素个数,也就是该群组对应的学生总数,结果会存入studentCount字段中。
  • 如果不需要保留完整的学生数组,只想保留统计数量,可以把最后一个阶段换成$project,明确指定要保留的字段:
    {$project: {
       _id: 1,
       title: 1,
       studentCount: {$size: "$student"}
    }}
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:38:15