我正在尝试从我们的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()是否可以进行此查询?或者是地图/减少更好的方式来解决这个问题。
提前致谢,
答案 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'}}}])