U kunt waarschijnlijk de positionele operator gebruiken om het array-element te identificeren:
Dus misschien zoiets als:
User.collection.update(
{ :_id => user.id, :matches => BSON::ObjectId('4e40238dbc9f6ec5a6000eed') },
{ :$set => { 'alert.matches.$' => matches } }
)
Maar zoals Sergio opmerkt, is het moeilijk om de structuur van uw documenten te ontrafelen op basis van de beperkte informatie in uw vraag.
Het lijkt erop dat er meer informatie binnenkwam nadat ik had geantwoord en het lijkt erop:
{ :$set => { 'alerts.$.matches' => ... } }
is wat je nodig hebt. En u moet :matches
. opnemen in de zoekopdracht zodat $
heeft iets om naar te verwijzen.