Database
[{"_id":ObjectId("6115150f01d7d0426bcd0390"),"conf":"conference123","uid":"2dd8b4e3-9dcd-4da6-bc36-aa0988dc9642","log":[{"dt":ISODate("2021-08-12T12:33:49.782Z"),"connection_quality":60,"video_bitrate":150},{"dt":ISODate("2021-08-12T12:34:19.781Z"),"video_bitrate":145/** connection_quality didn't change so it's not stored*/},{"dt":ISODate("2021-08-12T12:34:30.781Z"),"video_bitrate":130/** connection_quality didn't change so it's not stored*/},{"dt":ISODate("2021-08-12T12:34:49.787Z"),"connection_quality":100,"video_bitrate":150},{"dt":ISODate("2021-08-12T12:35:19.789Z"),"video_bitrate":160/** connection_quality didn't change so it's not stored*/}]}]
Query
db.collection.aggregate([{"$addFields":{"log":{"$arrayElemAt":[{"$reduce":{"input":"$log","initialValue":[60,[]],"in":{"$let":{"vars":{"prv_value_logs":"$$value","log":"$$this"},"in":{"$let":{"vars":{"prv_value":{"$arrayElemAt":["$$prv_value_logs",0]},"logs":{"$arrayElemAt":["$$prv_value_logs",1]}},"in":{"$cond":[{"$and":[{"$ne":["$$log.connection_quality",null]},{"$ne":[{"$type":"$$log.connection_quality"},"missing"]}]},["$$log.connection_quality",{"$concatArrays":["$$logs",["$$log"]]}],["$$prv_value",{"$concatArrays":["$$logs",[{"$mergeObjects":["$$log",{"connection_quality":"$$prv_value"}]}]]}]]}}}}}}},1]}}}])