Database

[{"_id":"654559d3d99d55b786221257","interactions":[{type:"LIKE",date:ISODate("2023-08-30T08:55:10.000Z")},{type:"LIKE",date:ISODate("2023-08-30T12:51:10.000Z")},{type:"LIKE",date:ISODate("2023-08-31T08:51:10.000Z")},{type:"LIKE",date:ISODate("2023-09-07T10:51:10.000Z")},{type:"LIKE",date:ISODate("2023-09-09T12:51:10.000Z")},{type:"DISLIKE",date:ISODate("2023-08-31T08:51:10.000Z")},{type:"DISLIKE",date:ISODate("2023-09-06T08:51:10.000Z")}],"createdAt":ISODate("2023-08-30T08:51:10.000Z")},{"_id":"654559e574e73904c2b5b084","interactions":[{type:"LIKE",date:ISODate("2023-08-25T09:55:10.000Z")},{type:"LIKE",date:ISODate("2023-08-28T12:51:10.000Z")}],"createdAt":ISODate("2023-08-25T08:51:10.000Z")}]

Query

db.collection.aggregate([{$unwind:"$interactions"},{$set:{dateBucket:{$dateToString:{date:"$interactions.date",format:"%Y-%U"}}}},{$group:{_id:{userId:"$_id",dateBucket:"$dateBucket"},likesCount:{$sum:{$cond:[{$eq:["$interactions.type","LIKE"]},1,0]}},dislikesCount:{$sum:{$cond:[{$eq:["$interactions.type","DISLIKE"]},1,0]}},interactionsCount:{$sum:1}}},{$set:{userId:"$_id.userId",dateBucket:"$_id.dateBucket"}},{$project:{_id:0}}])

Result