Database
db={"tasks":[{"_id":1,"task_name":"Task 1","user_id":101,"project_id":1001},{"_id":2,"task_name":"Task 2","user_id":102,"project_id":1001},{"_id":3,"task_name":"Task 3","user_id":103,"project_id":1001}],"users":[{"_id":1,"user_id":101,"parent_user_id":101,"project_id":1001,"details":"User 1 Details"},{"_id":2,"user_id":102,"parent_user_id":101,"project_id":1001,"details":"User 2 Details"},{"_id":3,"user_id":103,"parent_user_id":103,"project_id":1001,"details":"User 3 Details"}]}
Query
db.tasks.aggregate([{"$lookup":{"from":"users","let":{"uid":"$user_id","pid":"$project_id"},"pipeline":[{"$match":{"$expr":{"$and":[{"$eq":["$project_id","$$pid"]}]}}},{"$addFields":{"is_same_user":{"$eq":["$user_id","$$uid"]},"lookup_user_id":{"$ifNull":["$parent_user_id","$user_id"]}}},{"$match":{"$expr":{"$or":[{"$and":[{"$eq":["$is_same_user",true]},{"$eq":["$user_id","$$uid"]}]},{"$eq":["$lookup_user_id","$$uid"]}]}}},{"$project":{"_id":0,"parent_user_id":1,"details":1}}],"as":"user_info"}},{"$replaceRoot":{"newRoot":{"$mergeObjects":[{"$arrayElemAt":["$user_info",0]},"$$ROOT"]}}},{"$project":{"user_info":0,"project_id":0}}])