Probabilmente puoi utilizzare l'operatore posizionale per identificare l'elemento dell'array:
Quindi forse qualcosa come:
User.collection.update(
{ :_id => user.id, :matches => BSON::ObjectId('4e40238dbc9f6ec5a6000eed') },
{ :$set => { 'alert.matches.$' => matches } }
)
Ma come osserva Sergio, è difficile definire la struttura dei tuoi documenti sulla base delle informazioni limitate nella tua domanda.
Sembra che siano arrivate più informazioni dopo che ho risposto e che sia:
{ :$set => { 'alerts.$.matches' => ... } }
è ciò di cui hai bisogno. E dovrai includere :matches
nella query in modo che $
ha qualcosa a cui fare riferimento.