Database

db={"events":[{"createdAt":ISODate("2020-02-03T00:00:00.000Z"),"title":"Book meeting"},{"createdAt":ISODate("2020-02-03T01:00:00.000Z"),"title":"Book meeting"},{"createdAt":ISODate("2020-02-03T00:00:00.000Z"),"title":"Training"},{"createdAt":ISODate("2020-02-04T00:00:00.000Z"),"title":"Training"},{"createdAt":ISODate("2020-02-04T01:00:00.000Z"),"title":"Training"},{"createdAt":ISODate("2020-02-04T02:00:00.000Z"),"title":"Training"}]}

Query

db.events.aggregate([{$group:{_id:{title:"$title",date:{$dateToString:{date:"$createdAt",format:"%Y-%m-%d"}}},count:{$sum:1}}},{$group:{_id:"$_id.date",titles:{$push:{k:"$_id.title",v:"$count"}}}},{$addFields:{titles:{$mergeObjects:[{"date":{$concat:["$_id","T00:00:00.000Z"]}},{$arrayToObject:"$titles"}]}}},{$replaceWith:"$titles"}])

Result