Database

db={posts:[{"_id":1,"title":"English post",language:1,"translations":1},{"_id":2,"title":"Turkish post",language:2,"translations":1},{"_id":3,"title":"Finnish post",language:3,"translations":1},],languages:[{"_id":1,"name":"English",},{"_id":2,"name":"Turkish",},{"_id":3,"name":"Finnish",},],translations:[{"_id":1,translations:[{language:1,post:1},{language:2,post:2},{language:3,post:3},]}]}

Query

db.translations.aggregate([{$match:{_id:1}},{$lookup:{from:"posts",localField:"translations.post",foreignField:"_id",as:"posts"}},{$lookup:{from:"languages",localField:"posts.language",foreignField:"_id",as:"translations"}},{$project:{data:{$map:{input:"$posts",in:{post:{title:"$$this.title",_id:"$$this._id"},language:{$arrayElemAt:["$translations",{$indexOfArray:["$translations._id","$$this._id"]}]}}}}}},{$replaceRoot:{newRoot:{$mergeObjects:[{$first:{$filter:{input:"$data",cond:{$eq:["$$this.post._id","$_id"]}}}},{translations:{_id:"$_id",translations:{$filter:{input:"$data",cond:{$ne:["$$this.post._id","$_id"]}}}}}]}}},{$project:{_id:"$post._id",title:"$post.title",language:1,translations:1}}])

Result