Database

[{"_id":1,"name":"John Doe","sportsList":[{"name":"football","level":1500,"levelHistory":[{"from":1450,"to":1500,"date":2}]},{"name":"tennis","level":1400,"levelHistory":[{"from":1350,"to":1400,"date":3}]}]}]

Query

db.collection.update({_id:1},[{"$set":{"sportsList":{"$map":{"input":"$sportsList","in":{"$cond":[{"$ne":["$$this.name","tennis"]},"$$this",{"$mergeObjects":["$$this",{"level":1450,"levelHistory":{"$concatArrays":["$$this.levelHistory",[{"from":1400,"to":1450,"date":4}]]}}]}]}}}}}])

Result