Database
[{active_date:ISODate("2022-01-18"),user_id:1},{active_date:ISODate("2022-01-17"),user_id:1},{active_date:ISODate("2022-01-16"),user_id:1},{active_date:ISODate("2022-01-14"),user_id:1},{active_date:ISODate("2022-01-18"),user_id:2},{active_date:ISODate("2022-01-15"),user_id:2},{active_date:ISODate("2022-01-14"),user_id:2},{active_date:ISODate("2022-01-13"),user_id:2},]
Query
db.collection.aggregate([{$sort:{active_date:1}},{"$group":{_id:"$user_id",dates:{"$push":{"$toLong":"$active_date"},},from:{$first:{"$toLong":"$active_date"}},to:{$last:{"$toLong":"$active_date"}}}},{$project:{active_days:{$let:{vars:{result:{$reduce:{input:"$dates",initialValue:{prev:{$subtract:["$from",86400000]},range:{from:"$from",to:0,count:0},ranges:[]},in:{$cond:[{$eq:[{$subtract:["$$this","$$value.prev"]},86400000]},{prev:"$$this",range:{from:"$$value.range.from",to:"$$value.range.to",count:{$add:["$$value.range.count",1]}},ranges:"$$value.ranges"},{ranges:{$concatArrays:["$$value.ranges",[{from:"$$value.range.from",to:"$$value.prev",count:"$$value.range.count"}]]},range:{from:"$$this",to:"$to",count:1},prev:"$$this"},]}}}},in:{$concatArrays:["$$result.ranges",["$$result.range"]]}}}}},{"$project":{active_days:{"$last":"$active_days.count"}}}])