【问题标题】:How to get grand total of columns in mongodb aggregate如何获取 mongodb 聚合中的列总数
【发布时间】:2020-03-09 10:44:02
【问题描述】:

我正在使用 mongodb 聚合来显示报告。我的查询如下:

db.campaigns_report.aggregate([
   { '$match' : { } },
   { '$group' : {
      '_id': '$campaignId', 
      'campaignName' : { '$first': '$campaignName' },
      'impressions' : { '$sum': '$impressions' }
   }
  },
  { '$project' : {'campaignName': '$campaignName', 'impressions': '$impressions'} },
  { '$facet'    : {
    'metadata': [ { '$count': "total"} ],
    'data': [ { '$skip': 0 },{ '$limit': 10 } ]
  } 
 }
]);

在上述查询中,我想要$facet 中的总展示次数以及文档总数。 提前致谢。

【问题讨论】:

    标签: mongodb aggregation-framework


    【解决方案1】:

    要获得总展示次数和总文档计数,您需要运行 $group 指定 null 作为分组 _id 并使用 $sum 运算符两次:

    db.campaigns_report.aggregate([
        { '$match' : { } },
        { '$group' : {
            '_id': '$campaignId', 
            'campaignName' : { '$first': '$campaignName' },
            'impressions' : { '$sum': '$impressions' }
        }
        },
        { '$project' : {'campaignName': '$campaignName', 'impressions': '$impressions'} },
        { '$facet'    : {
            'metadata': [ { '$group': { _id: null, total: { $sum: 1 }, totalImpressions: { $sum: '$impressions' } } } ],
            'data': [ { '$skip': 0 },{ '$limit': 10 } ]
            }
        }
    ])
    

    Mongo Playground

    【讨论】:

      猜你喜欢
      • 2013-12-19
      • 2020-05-01
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      • 2020-03-05
      • 2019-12-29
      • 2017-02-12
      相关资源
      最近更新 更多