Как написать Mon go Query для count _id для specfi c month и группировать по годам - PullRequest
0 голосов
/ 29 апреля 2020

Привет, как написать эквивалентный запрос в

select count(_id), year from table where month="1" group by year

У меня есть документ данных с 10000+ записями, я хочу посчитать _id за январь месяц и сгруппировать по годам в пн go

Mongodb Query я написал это

    db.collection.aggregate( 
   {$project : { 
          month : {$month : new Date("$displayDate")}, 
          year : {$year :  new Date("$displayDate")}
      }}, 
    {$group : { 
            _id : {month : "$month" ,year : "$year" },  
          count : {$sum : 1} 
    }})

1 Ответ

0 голосов
/ 29 апреля 2020

Если вы хотите получить только данные за январь, то агрегирование будет следующим:

db.collection.aggregate( 
 {$project : { 
      month : {$month : "$displayDate"}, 
      year : {$year :  "$displayDate"}
  }}, 
 {$match: {month: 1}},
 {$group : { 
        _id : {year : "$year" },  
      count : {$sum : 1} 
 }})

Примечание. Date значения в MongoDB всегда UT C раз, вы можете получить сдвиг по времени , Вы можете предпочесть $ dateToParts , чтобы указать часовой пояс.

...