Du kan sandsynligvis bruge positionsoperatoren for at identificere array-elementet:
Så måske noget som:
User.collection.update(
{ :_id => user.id, :matches => BSON::ObjectId('4e40238dbc9f6ec5a6000eed') },
{ :$set => { 'alert.matches.$' => matches } }
)
Men som Sergio bemærker, er det vanskeligt at aflæse strukturen af dine dokumenter baseret på den begrænsede information i dit spørgsmål.
Det ser ud til, at der er kommet flere oplysninger efter jeg svarede, og det ser ud som:
{ :$set => { 'alerts.$.matches' => ... } }
er hvad du har brug for. Og du skal inkludere :matches
i forespørgslen, så $
har noget at henvise til.