Database

[{time:1649083392,volume:"20384.28",open:444.42,close:444.56,high:444.76,low:444.36},{time:1649083448,volume:"20384.28",open:444.42,close:444.56,high:444.76,low:444.36},{time:1649083501,volume:"20384.28",open:444.42,close:444.56,high:444.76,low:444.36},{time:1650083501,volume:"20384.28",open:444.42,close:444.56,high:444.76,low:444.36}]

Query

db.collection.aggregate([{$sort:{time:-1}},{$set:{d:{$toDate:{$multiply:["$time",1000]}},volume:{$toDecimal:"$volume"}}},{$facet:{day:[{$group:{_id:{$dateTrunc:{date:"$d",unit:"day"}},volume:{$sum:"$volume"},lastItem:{$first:"$$ROOT"}}}],hour:[{$group:{_id:{year:{$year:"$d"},dayOfYear:{$dayOfYear:"$d"},hour:{$hour:"$d"}},volume:{$sum:"$volume"},lastItem:{$first:"$$ROOT"}}}],15min:[{$group:{_id:{year:{$year:"$d"},dayOfYear:{$dayOfYear:"$d"},hour:{$hour:"$d"},interval:{$subtract:[{$minute:"$d"},{$mod:[{$minute:"$d"},15]}]}},volume:{$sum:"$volume"},lastItem:{$first:"$$ROOT"}}}]}}])

Result