Database

db={"measurements":[{"_id":1,tmstamp:1577644027,value:0},{"_id":2,tmstamp:1577644028,value:0},{"_id":3,tmstamp:1577644029,value:1},{"_id":4,tmstamp:1577644030,value:1},{"_id":5,tmstamp:1577644031,value:2},{"_id":6,tmstamp:1577644032,value:2},{"_id":7,tmstamp:1577644033,value:3},{"_id":8,tmstamp:1577644034,value:2},{"_id":9,tmstamp:1577644035,value:1},{"_id":10,tmstamp:1577644036,value:0},{"_id":11,tmstamp:1577644037,value:1},{"_id":12,tmstamp:1577644038,value:1},{"_id":13,tmstamp:1577644039,value:1},{"_id":14,tmstamp:1577644040,value:0}]}

Query

db.measurements.aggregate([{$facet:{alerts:[{$match:{value:0}},{$group:{_id:"",ids:{$push:"$_id"}}}],episodes:[{$match:{value:{$gt:0}}}]}},{$unwind:"$alerts"},{$addFields:{alert_idx:"$alerts.ids"}},{$unwind:"$alerts.ids"},{$project:{"k":{$concat:["Episode",{$toString:{$indexOfArray:["$alert_idx","$alerts.ids"]}}]},"v":{$filter:{input:"$episodes",cond:{$and:[{$gt:["$$this._id","$alerts.ids"]},{$lt:["$$this._id",{$arrayElemAt:["$alert_idx",{$sum:[{$indexOfArray:["$alert_idx","$alerts.ids"]},1]}]}]}]}}}}},{$match:{"v":{$ne:[]}}}])

Result