Du kan förmodligen använda positionsoperatorn för att identifiera arrayelementet:
Så kanske något i stil med:
User.collection.update(
{ :_id => user.id, :matches => BSON::ObjectId('4e40238dbc9f6ec5a6000eed') },
{ :$set => { 'alert.matches.$' => matches } }
)
Men som Sergio noterar är det svårt att urskilja strukturen på dina dokument baserat på den begränsade informationen i din fråga.
Det verkar som att mer information kom in efter att jag svarat och det ser ut som:
{ :$set => { 'alerts.$.matches' => ... } }
är vad du behöver. Och du måste inkludera :matches
i frågan så att $
har något att referera till.