Database

[{"TV":[{"T":"2018-05-05T09:00:00.000Z","V":1.3},{"T":"2018-05-05T09:00:00.000Z","V":2.21}],"values":[100,200]}]

Query

db.collection.aggregate([{$project:{"TV_values":{$map:{input:"$TV",in:{$mergeObjects:["$$this",{hour:{$hour:{$toDate:"$$this.T"}},date:{$dateToString:{date:{$toDate:"$$this.T"},format:"%Y-%m-%d"}},values:{$arrayElemAt:["$values",{$indexOfArray:["$TV.V","$$this.V"]}]}}]}}}}}])

Result