Probablemente puedas usar el operador posicional para identificar el elemento de la matriz:
Así que tal vez algo como:
User.collection.update(
{ :_id => user.id, :matches => BSON::ObjectId('4e40238dbc9f6ec5a6000eed') },
{ :$set => { 'alert.matches.$' => matches } }
)
Pero, como señala Sergio, es difícil descifrar la estructura de sus documentos en función de la información limitada de su pregunta.
Parece que llegó más información después de que respondí y parece:
{ :$set => { 'alerts.$.matches' => ... } }
es lo que necesitas Y deberá incluir :matches
en la consulta para que $
tiene algo a lo que referirse.