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

如何在MongoDB中获取所有分类及对应关联文章的数量?

MongoDB 获取所有分类及对应文章总数的实现方法

可以通过MongoDB的聚合管道实现需求,推荐从categories集合出发进行聚合,确保所有分类都被包含(即使该分类下没有文章,也会返回count: 0),具体聚合查询如下:

db.categories.aggregate([
  // 关联posts集合,获取当前分类对应的所有文章
  {
    $lookup: {
      from: "posts",
      localField: "_id",
      foreignField: "categoryId",
      as: "relatedPosts"
    }
  },
  // 计算文章数量,并将分类ID转为字符串格式
  {
    $addFields: {
      count: { $size: "$relatedPosts" },
      categoryId: { $toString: "$_id" }
    }
  },
  // 只保留需要的字段,过滤掉冗余数据
  {
    $project: {
      _id: 0,
      categoryName: 1,
      categoryId: 1,
      count: 1
    }
  }
])

各阶段说明:

  • $lookup:将categories与posts集合关联,匹配条件为分类的_id等于文章的categoryId,关联结果存入relatedPosts数组。
  • $addFields:用$size统计relatedPosts数组的长度,得到该分类下的文章总数;同时用$toString将分类的ObjectId类型_id转为字符串格式,与需求中的categoryId格式统一。
  • $project:过滤掉不需要的_id和relatedPosts字段,只保留categoryName、categoryId和count三个字段。

执行后将返回符合你需求格式的结果,例如:

[
  { "categoryName": "misc", "categoryId": "643d76f4ce4b765e18dee084", "count": 3 },
  { "categoryName": "aws", "categoryId": "643d76f4ce4b765e18dee085", "count": 2 }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:07:57