Está golpeando directamente una de las limitaciones actuales de MongoDB. El problema es que el motor no admite varios operadores posicionales. Vea esto Uso múltiple del operador posicional `$` para actualizar matrices anidadas
Hay un ticket abierto para esto:https://jira.mongodb.org/browse/SERVER-831 (también mencionado allí)
También puede leer este sobre cómo cambiar su modelo de datos:Actualización de matrices anidadas en mongodb
Si es factible para ti, puedes hacer:
db.collection.update({_id:2,"event_type.name":'MT' ,"event_type.language.name":'English'},{$set:{"event_type.0.language.$.count":<number>}})
db.collection.update({_id:2,"event_type.name":'MT' ,"event_type.language.name":'English'},{$set:{"event_type.$.language.0.count":<number>}})
Pero no puedes hacer:
db.collection.update({_id:2,"event_type.name":'MT' ,"event_type.language.name":'English'},{$set:{"event_type.$.language.$.count":<number>}})