Database
[{a:[1,2,4,7,8]}]
Query
db.collection.aggregate([{$addFields:{a:{$reduce:{input:"$a",initialValue:[],in:{$concatArrays:["$$value",[{val:"$$this",group:{$cond:{if:{$lte:[{$subtract:["$$this",{$last:"$$value.val"}]},2]},then:{$ifNull:[{$last:"$$value.group"},0]},else:{$add:[{$last:"$$value.group"},1]}}}}]]}}}}},{$unwind:"$a"},{$group:{_id:"$a.group",data:{$push:"$a.val"}}},{$group:{_id:null,a:{$push:"$data"}}}])