Как вывести количество записей в день в MongoDB?

Хочу сделать статистику регистрации юзеров в виде подобного графика: График

Каким образом мне получить количество записей за каждый день на протяжении месяца?

Что-то вроде:

2019-03-22 - 1

2019-03-23 - 10

...

Данные в таком виде:

{ 
   "name" : "Alexander",
   "createdAt" : ISODate("2019-03-22T11:04:19.709Z"), 
   "updatedAt" : ISODate("2019-04-29T10:22:51.953Z")
}

Ответы (1 шт):

Автор решения: HTMLProgrammer

Я написал это в mongo shell, в код на mongoose, думаю, сами сможете перевести

map = function(){
    emit(
        Date.UTC(
            this.createdAt.getFullYear(), 
            this.createdAt.getMonth(), 
            this.createdAt.getDate()
), this.name)};

const reduce = function(key, value){return value.length};
db.users.mapReduce(map, reduce, { out: {inline: 1} });

либо через aggregate

db.users.aggregate([{$group: {_id: { $dateToString: { format: "%Y-%m-%d", date: "$createdAt" } }, users: {$push: "$name"}}}, {$project: {usersCount: {$size: "$users"}}}])
→ Ссылка