Você pode usar o
$
operador posicional para fazer isso:db.soup.update(
{_id: ObjectId("50b429ba0e27b508d854483e"), 'array.id': '2'},
{$set: {'array.$.letter': 'c'}})
O
$
no objeto de atualização atua como um espaço reservado para o primeiro elemento de array
para corresponder ao seletor de consulta.