Database

db={Conversation:[{_id:1,participants:[1,2],created_at:"1970-01-01T00:00:00Z"}],Client:[{_id:1,email:"a@gmail.com",name:"A",job:"IT",company:"Google",school:"Hw"}],Message:[{_id:1,conversation_id:1,message:"Test",sender:1,reciever:2,created_at:"1970-01-01T00:00:00Z"},{_id:2,conversation_id:1,message:"Test",sender:1,reciever:2,created_at:"1971-01-01T00:00:00Z"}]}

Query

db.Conversation.aggregate([{$match:{participants:{$all:[1]}}},{$lookup:{from:"Message",let:{conversation_id:"$_id"},pipeline:[{$match:{$expr:{$eq:["$$conversation_id","$conversation_id"]}}},{$sort:{"created_at":-1}}],as:"messages"}},{$lookup:{from:"Client",let:{participants:"$participants"},pipeline:[{$match:{$expr:{$in:["$_id","$$participants"]}}},{$sort:{"created_at":-1}}],as:"participants"}}])

Result