0

我正在尝试从我们的 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() 可以进行此查询吗?或者地图/减少是解决这个问题的更好方法。

提前致谢,

4

1 回答 1

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'}}}])
于 2013-08-26T22:12:38.183 回答