Quando o mongodb consulta um campo de array, ele fornece um operador posicional
$
que você pode usar para acessar um elemento específico nessa matriz. Você pode usar um operador elemMatch para pesquisar os campos em uma matriz de objetos. Exemplo:
db.myCollection.find({
_id: ObjectId("53b1a44350f148976b0b6044"),
myArray: {
$elemMatch: {key1: 'somevalue'}
}
}, {
$set:{
'myArray.$.key2': 'someOtherValue'
}
});
Consulte:http://docs.mongodb.org/manual/reference/ operador/atualização/posicional/