I want to update an array that I have in a mongo doc. The structure of which looks something like:
{
_id: id,
myArray: [
{key1: val, key2: val, key3: va
When mongodb queries an array field it provides a positional operator $
which you can use to access a specific element in that array. You can use an elemMatch operator to search into the fields within an array of objects.
Example:
db.myCollection.find({
_id: ObjectId("53b1a44350f148976b0b6044"),
myArray: {
$elemMatch: {key1: 'somevalue'}
}
}, {
$set:{
'myArray.$.key2': 'someOtherValue'
}
});
See: http://docs.mongodb.org/manual/reference/operator/update/positional/