1

如何使用 mongodb 获取每天/每周/每月访问量最大的页面/条目

此解决方案适用于统计数据,但不适用于最常访问条目列表 MongoDB 存储大量指标/分析数据的方法

map/reduce 太慢了……还是不行?

谢谢

4

1 回答 1

2

根据您提到的示例,创建了一个集合,其中 url 命中按小时显示。

假设示例文档是这样的

{page: "/index.html", time: Date( "Mon Apr 18 07:49:28 2011"), views: 53, tweets: 2}

您可以使用 Mongodb 的聚合框架。以下是每月汇总视图的 sudo 代码。

    db.pagestats.aggregate( { $project : { month_hits : { $month : "$time" } } },    
    { $group:{_id : {$month_hits:"$month_hits"},hits: { $sum: "$views" } } }, 
    { $sort : { "_id.hits" : 1 }} } );

有关聚合的更多详细信息,请参阅此链接

Map-Reduce 不适用于实时查询。因此,您可以进行类似的聚合并将结果保存在临时集合中并用于实时查询。您可以执行增量 MapReduce,这样您就无需再次为整个集合运行 MapReduce。阅读此处了解更多详情。

对于这种情况,我会选择增量 MapReduce。

于 2012-12-31T08:27:33.180 回答