Database

[{"date":ISODate("2022-10-21T00:00:00.000Z"),task:1},{"date":ISODate("2022-10-20T00:00:00.000Z"),task:2},{"date":ISODate("2022-10-21T00:00:00.000Z"),task:6},{"date":ISODate("2022-10-20T00:00:00.000Z"),task:7},{"date":ISODate("2022-10-20T00:00:00.000Z"),task:8},{"date":ISODate("2022-10-18T00:00:00.000Z"),task:3},{"date":ISODate("2022-10-16T00:00:00.000Z"),task:4}]

Query

db.collection.aggregate([{$group:{_id:"$date",tasks:{$push:"$$ROOT"}}},{$sort:{_id:1}},{$group:{_id:null,roots:{$push:"$$ROOT"}}},{$addFields:{roots:{$reduce:{input:"$roots",initialValue:{values:[],lastDate:null},in:{lastDate:"$$this._id",values:{$concatArrays:["$$value.values",{$map:{input:{$range:[0,{$round:{$divide:[{"$toDouble":{$subtract:["$$this._id",{$ifNull:["$$value.lastDate",{$subtract:["$$this._id",86400000]}]}]}},86400000]}}]},as:"dayDiff",in:{$cond:[{$eq:["$$dayDiff",0]},"$$this",{tasks:[],_id:{$toDate:{$add:["$$this._id",{$multiply:[{"$multiply":[86400000,"$$dayDiff"]},-1]}]}}}]}}}]}}}}}},{$unwind:"$roots.values"},{$replaceRoot:{newRoot:"$roots.values"}},{$sort:{_id:-1}}])

Result