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

如何用MongoDB聚合查询获取各bookId的点赞、点踩、分享总数

MongoDB聚合查询:按bookId统计各互动类型总数

针对histories集合,要统计每个唯一bookId对应的点赞(like)、分享(share)、点踩(dislike)总数,可以使用以下aggregate管道:

db.histories.aggregate([
  // 按bookId分组,统计各类型数量
  {
    $group: {
      _id: "$bookId",
      likeCount: {
        $sum: { $cond: [{ $eq: ["$type", "like"] }, 1, 0] }
      },
      shareCount: {
        $sum: { $cond: [{ $eq: ["$type", "share"] }, 1, 0] }
      },
      dislikeCount: {
        $sum: { $cond: [{ $eq: ["$type", "dislike"] }, 1, 0] }
      }
    }
  },
  // 重新格式化输出字段
  {
    $project: {
      bookId: "$_id",
      likeCount: 1,
      shareCount: 1,
      dislikeCount: 1,
      _id: 0
    }
  }
])

管道阶段说明

  • $group:以bookId作为分组依据,通过$cond判断每个文档的type字段,匹配目标类型时累加1,否则累加0,实现各类型的计数。
  • $project:将分组后的_id(即原bookId)重命名为bookId,并移除默认的_id字段,让输出结构更直观。

示例输出

基于你提供的两个文档,执行上述查询后会得到如下结果:

[
  {
    "bookId": "6329af1b1c67cc8eaf26fe42",
    "likeCount": 1,
    "shareCount": 0,
    "dislikeCount": 0
  },
  {
    "bookId": "6322db5464c70448ad0282d4",
    "likeCount": 0,
    "shareCount": 1,
    "dislikeCount": 0
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:30:56