Database
db={"users":[{_id:"user1","username":"john"},{_id:"user2",username:"bob"},],"articles":[{_id:"article1",view_history:[{user:"user1",viewed_at:new Date()},{user:"user2",viewed_at:new Date()},{user:"user1",viewed_at:new Date()},]}]}
Query
db.articles.aggregate([{$lookup:{from:"users",localField:"view_history.user",foreignField:"_id",as:"output"}},{$project:{view_history:{$map:{input:"$view_history",as:"v",in:{user:{$let:{vars:{u:{$filter:{input:"$output",cond:{$eq:["$$this._id","$$v.user"]}}}},in:{$arrayElemAt:["$$u.username",0]}}},viewed_at:"$$v.viewed_at"}}}}}])