Database

[{"id":"0001","date":ISODate("2021-01-01T00:00:00Z"),"price":50},{"id":"0001","date":ISODate("2021-01-02T00:00:00Z"),"price":40},{"id":"0001","date":ISODate("2021-01-03T00:00:00Z"),"price":30},{"id":"0001","date":ISODate("2021-01-04T00:00:00Z"),"price":10},{"id":"0001","date":ISODate("2021-01-05T00:00:00Z"),"price":20},{"id":"0002","date":ISODate("2021-01-01T00:00:00Z"),"price":100},{"id":"0002","date":ISODate("2021-01-02T00:00:00Z"),"price":110},{"id":"0002","date":ISODate("2021-01-03T00:00:00Z"),"price":120},{"id":"0002","date":ISODate("2021-01-04T00:00:00Z"),"price":130},{"id":"0002","date":ISODate("2021-01-05T00:00:00Z"),"price":140}]

Query

db.collection.aggregate([{$sort:{date:1}},{$group:{_id:"$id",data:{$push:"$$ROOT"},latest_price:{$last:"$price"},latest_date:{$last:"$date"}}},{$set:{data:{$slice:["$data",0,{$subtract:[{$size:"$data"},1]}]}}},{$set:{data:{$filter:{input:"$data",cond:{$gt:["$$this.price","$latest_price"]}}}}},{$set:{data:{$map:{input:"$data",in:{$mergeObjects:["$$this",{diff:{$subtract:["$$this.price","$latest_price"]}}]}}}}},{$set:{data:{$filter:{input:"$data",cond:{$eq:["$$this.diff",{$min:"$data.diff"}]}}}}},{$project:{latest_date:1,the_closest_date:{$first:"$data.date"},the_closest_price:{$first:"$data.price"}}},])

Result