The possible solution is a stage in the aggregation pipeline. However, I feel that is it better to do this type of data cosmetic in application layer because it scale better. When done on the server, everybody is impacted by the extra work done on the server just to present the data in a specific format. When done in the application, only the instance of the application doing the query is impacted.
Thank @steevej , here my solution based on your suggestion: { $set : { "mapname" : {$arrayElemAt: ['$mapname.name',0] } }} that gave me the string value