最多访问蒙戈

时间:2012-12-31 05:36:25

标签: node.js mongodb database-design database nosql

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

此解决方案适用于统计信息,但不适用于访问量最大的条目列表 MongoDB Approaches for storing large amounts of metrics / analytics data

map / reduce太慢了......还是没有?

感谢

1 个答案:

答案 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将是我选择的场景。