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

如何在MongoDB聚合查询中计算产品最高转化率?

MongoDB聚合查询计算产品最高转化率

聚合查询实现代码

db.your_collection_name.aggregate([
  // 过滤仅保留View和Purchase事件
  {
    $match: {
      "Event type": { $in: ["View", "Purchase"] }
    }
  },
  // 按产品分组,统计浏览量和购买量
  {
    $group: {
      _id: "$Product",
      viewCount: {
        $sum: { $cond: [{ $eq: ["$Event type", "View"] }, 1, 0] }
      },
      purchaseCount: {
        $sum: { $cond: [{ $eq: ["$Event type", "Purchase"] }, 1, 0] }
      }
    }
  },
  // 计算转化率,处理浏览量为0的异常情况
  {
    $project: {
      product: "$_id",
      viewCount: 1,
      purchaseCount: 1,
      conversionRate: {
        $cond: [
          { $eq: ["$viewCount", 0] },
          0,
          { $multiply: [{ $divide: ["$purchaseCount", "$viewCount"] }, 100] }
        ]
      },
      _id: 0
    }
  },
  // 按转化率降序排序
  {
    $sort: { conversionRate: -1 }
  },
  // 可选:仅获取转化率最高的一个产品
  {
    $limit: 1
  }
])

各阶段说明

  • $match阶段:筛选出仅包含View和Purchase类型的事件,减少后续计算的数据量。
  • $group阶段:以Product为分组依据,通过$cond条件判断,分别统计每个产品的浏览量和购买量。
  • $project阶段:重新整理输出字段,按规则计算转化率(购买量/浏览量×100),同时通过条件判断避免浏览量为0时出现除以0的错误。
  • $sort阶段:按转化率从高到低排序,直观呈现产品转化率排名。
  • $limit阶段:可选配置,若只需要最高转化率的产品,添加此阶段返回第一条结果即可。

示例数据运行结果

针对你提供的样本数据,运行查询后会得到:

{ "viewCount" : 2, "purchaseCount" : 1, "product" : "water_heater", "conversionRate" : 50 }

即water_heater的转化率为50%,高于television的约33.33%,是转化率最高的产品。

内容的提问来源于stack exchange,提问作者Lee Yi Tien

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:05:20