Database

[{date:ISODate("2019-04-12T21:00:00.000Z")},{date:ISODate("2019-04-12T21:15:00.000Z")},{date:ISODate("2019-04-12T21:45:00.000Z")},{date:ISODate("2019-04-12T23:00:00.000Z")},{date:ISODate("2019-04-12T20:00:00.000Z")},{date:ISODate("2019-04-12T18:30:00.000Z")},{date:ISODate("2019-04-12T20:10:00.000Z")}]

Query

db.collection.aggregate([{$sort:{date:1}},{$group:{_id:null,dates:{$push:"$date"}}},{$addFields:{partitions:{$map:{input:{$range:[0,{$size:"$dates"}]},as:"index",in:{$let:{vars:{current:{$arrayElemAt:["$dates","$$index"]},prev:{$arrayElemAt:["$dates",{$add:["$$index",-1]}]}},in:{$cond:[{$or:[{$eq:["$$index",0]},{$lt:[{$subtract:["$$current","$$prev"]},1200000]}]},0,1]}}}}}}},{$project:{datesWithPartitions:{$map:{input:{$range:[0,{$size:"$dates"}]},as:"index",in:{date:{$arrayElemAt:["$dates","$$index"]},partition:{$sum:{$slice:["$partitions",{$add:["$$index",1]}]}}}}}}}])

Result