Mongodb Aggregate:嵌套总计

时间:2013-08-26 21:23:24

标签: mongodb aggregation-framework

我正在尝试从我们的mongo db生成一份报告,该报告根据每个推介网站的国家/地区代码计算唯一访问次数。我想使用聚合,因为我听说它非常快,这里的性能是一个问题。

我们有一个帐户数据库,其中包含与每个帐户关联的国家/地区代码和最后推荐网站。

{
   account:"user123",
   CountryCode:"CA",
   ReferalSite:"Google",
   lastLogin:"someisodate"
}

从概念上讲,我可以在几分钟内编写javascript。

For each unique vistor in accounts db;
    visits[vistor.country_code][vistor.refferal_site]+= 1;

db.accounts.aggregate()是否可以进行此查询?或者是地图/减少更好的方式来解决这个问题。

提前致谢,

1 个答案:

答案 0 :(得分:1)

您可以一个接一个地运行两个组:

    db.collection.aggregate([
        {$group:{_id:{account:'$account', CountryCode:'$CouintryCode', ReferalSite:'$ReferalSite'}}, {number:1}},
        {$group:{_id:{CountryCode:'$_id.CountryCode', ReferalSite:'$_id.ReferalSite'}}, {number:{$sum:'$number'}}}])