Как получить сумму подсчитанных записей, используя group by в mongodb? - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь получить сумму, которую я получаю от группы, матча.Как я могу получить то же самое.У меня есть этот код ...

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 голосов
/ 13 декабря 2018

Ниже вашего модифицированного запроса будет указана сумма счета, я только что добавил

$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 }
...