Database
[{timestamp:new Date("2022-11-04T08:58:03.303Z"),name:"Brian",username:"B2022@mail.com",type:"Type A"},{timestamp:new Date("2022-11-04T09:20:13.564Z"),name:"Brian",username:"B2022@mail.com",type:"Type A"},{timestamp:new Date("2022-11-04T13:12:25.024Z"),name:"Anna",username:"Anna@something.com",type:"Type A"},{timestamp:new Date("2022-11-04T03:34:23.011Z"),name:"Max",username:"Max@somethingelse.com",type:"Type B"},]
Query
db.collection.aggregate([{$group:{_id:{bins:{$dateTrunc:{date:"$timestamp",unit:"week",binSize:1,timezone:"Europe/Paris",startOfWeek:"monday"}}},usernameCount:{$addToSet:"$username"},typeAOccurencies:{$sum:{$cond:{if:{$eq:["$type","Type A"]},then:1,else:0}}},typeBOccurencies:{$sum:{$cond:{if:{$eq:["$type","Type B"]},then:1,else:0}}}}},{$project:{_id:0,timestamp:"$_id.bins",usernameCount:{$size:"$usernameCount"},typeAOccurencies:1,typeBOccurencies:1}}])