如何在mongodb中使用group by获取计数记录的总和?

时间:2018-12-12 10:21:28

标签: mongodb mongodb-query aggregate

我正在尝试从小组比赛中获得总和。我怎么能得到相同的。 我有这段代码...

VisitorCompany.aggregate(
      [   
        {
          $match: {
            $and:[
              { entry_date: { $gt: start, $lt: end } }
            ]
          }
        },
          {
              $group:
              {
                  _id:
                  {
                      day: { $dayOfMonth: "$entry_date" },
                      month: { $month: "$entry_date" }, 
                      year: { $year: "$entry_date" }
                  }, 
                  count: { $sum:1 },
                  entry_date: { $first: "$entry_date" }
              }
          },
          {
              $project:
              {
                  entry_date:
                  {
                      $dateToString: { format: "%Y-%m-%d", date: "$entry_date" }
                  },
                  count: 1,
                  _id: 0
              }
          },
          { $sort : { entry_date : -1 } },
      ])

输出为...

        {
            "count": 2,
            "entry_date": "2018-12-12"
        },
        {
            "count": 1
            "entry_date": "2018-12-11"
        }

有人知道如何获取计数的总和,即3(2 + 1),表示组之前的记录总数。预先感谢。

1 个答案:

答案 0 :(得分:0)

在您的修改查询下面,您将得到计数的总和,我刚刚添加了

$group:{_id:"", sum:{$sum: "$count"}}}

到现有的聚合管道查询

修改后的查询

VisitorCompany.aggregate(
      [   
        {
          $match: {
            $and:[
              { entry_date: { $gt: start, $lt: end } }
            ]
          }
        },
          {
              $group:
              {
                  _id:
                  {
                      day: { $dayOfMonth: "$entry_date" },
                      month: { $month: "$entry_date" }, 
                      year: { $year: "$entry_date" }
                  }, 
                  count: { $sum:1 },
                  entry_date: { $first: "$entry_date" }
              }
          },
          {
              $project:
              {
                  entry_date:
                  {
                      $dateToString: { format: "%Y-%m-%d", date: "$entry_date" }
                  },
                  count: 1,
                  _id: 0
              }
          },
          { $sort : { entry_date : -1 } },
          {$group:{_id:"", sum:{$sum: "$count"}}}
      ])

结果

{ "_id" : "", "sum" : 3 }