Database
db={"ratings":[{"id":"1","some_field":"test","rates":[{"user_id":"12","rate":"very_good"},{"user_id":"13","rate":"very_good"},{"user_id":"14","rate":"bad"},{"user_id":"15","rate":"normal"}]}],"ratingScale":[{"rate_name":"bad","rate_value":1},{"rate_name":"normal","rate_value":2},{"rate_name":"very_good","rate_value":3}]}
Query
db.ratings.aggregate([{"$lookup":{"from":"ratingScale","as":"ratingScale","pipeline":[]}},{"$set":{"rates":{"$map":{"input":"$rates","as":"rate","in":{"$getField":{"field":"rate_value","input":{"$first":{"$filter":{"input":"$ratingScale","as":"nameValue","cond":{"$eq":["$$rate.rate","$$nameValue.rate_name"]}}}}}}}}}},{"$unset":"ratingScale"}])