Database

db={main:[{"_id":ObjectId("5ea1a07bfd7e4965408a5171"),"data":[],"history_id":ObjectId("5e4e755b380054797d9db627"),"sender_id":ObjectId("5e4a8d2d3952132a08ae5764"),"text":"Hi tester","date":1587650683434},{"_id":ObjectId("5ea1a07bfd7e4965408a5179"),"data":[],"history_id":ObjectId("5e4e755b380054797d9db627"),"sender_id":ObjectId("5e4a8d2d3952132a08ae5764"),"text":"Hi tester 2","date":1587650683435},{"_id":ObjectId("5ea1a07bfd7e4965408a5172"),"data":[],"history_id":ObjectId("5e4e755b380054797d9db627"),"sender_id":ObjectId("5e4a8d2d3952132a08ae5764"),"text":"Hi tester 3","date":1587650683437}],history:[]}

Query

db.main.aggregate([{$lookup:{from:"history",localField:"history_id",foreignField:"history_id",as:"History"}},{$project:{"History":{$filter:{input:"$History",as:"his",cond:{$and:[{$lt:["$$his.date","$date"]},{$eq:["5e4a8d2d3952132a08ae5724","$$his.user_id"]}]}}},data:1,history_id:1,sender_id:1,text:1,date:1}},{$unwind:"$History"}])

Result