Pravděpodobně můžete použít poziční operátor k identifikaci prvku pole:
Takže možná něco jako:
User.collection.update(
{ :_id => user.id, :matches => BSON::ObjectId('4e40238dbc9f6ec5a6000eed') },
{ :$set => { 'alert.matches.$' => matches } }
)
Ale jak Sergio poznamenává, je obtížné vylepšit strukturu vašich dokumentů na základě omezených informací ve vaší otázce.
Zdá se, že poté, co jsem odpověděl, přišly další informace a vypadá to takto:
{ :$set => { 'alerts.$.matches' => ... } }
je to, co potřebujete. A budete muset zahrnout :matches
v dotazu tak, že $
má na co odkazovat.