如何使用mongodb获取每日/每周/每月访问量最大的页面/条目
此解决方案适用于统计信息,但不适用于访问量最大的条目列表 MongoDB Approaches for storing large amounts of metrics / analytics data
map / reduce太慢了......还是没有?
感谢
答案 0 :(得分: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 }} } );
有关聚合的详细信息,请参阅此link。
Map-Reduce不适用于实时查询。因此,您可以执行类似的聚合并将结果保存在临时集合中,并将其用于实时查询。您可以执行增量MapReduce,这样您就无需再次为整个集合运行MapReduce。请阅读here了解详情。
增量MapReduce将是我选择的场景。