假设我有包含的集合
第一列有两种类型的字段,(浏览量和购买量) 第二列包含不同种类的产品。 以上数据已经作为集合导入到MongoDB数据库中。我想通过计算产品的最高转化率(100 个客户查看 1 个客户购买 = 1%)来执行数据分析。 通过使用聚合,它需要进行查看和购买的匹配。 然后根据商品计算购买数量,查看分组。 最后,将购买次数除以观看次数。 作为MongoDB的初学者,我发现它很难,想问一下有没有什么办法可以做到?
最佳答案
您可以使用非常标准的管道来实现这一点,我们的策略是将同一产品的 $group
文档,同时使用 $cond
运算符来汇总 View 和购买。最后我们只需要根据需要投影出相关的比例即可。
像这样:
db.collection.aggregate([
{
$group: {
_id: "$product",
purchases: {
$sum: {
$cond: [
{
$eq: [
"$event_type",
"purchase"
]
},
1,
0
]
}
},
views: {
$sum: {
$cond: [
{
$eq: [
"$event_type",
"view"
]
},
1,
0
]
}
}
}
},
{
$project: {
_id: 0,
product: "$_id",
ratio: {
$divide: [
"$purchases",
"$views" // can we have a purchase without a view? can views be 0? if so need to handle this edge case.
]
}
}
},
{
$sort: {
ratio: -1
}
}
])
关于sql - 在 MongoDb 查询中执行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73670319/