Suppose I have the following MongoDB collection, and I'd like to find all documents whose ratings.by is ijk and update its rating to 6.
In other words, update { by: "ijk", rating: 4 } to { by: "ijk", rating: 6 }. The problem is that I don't know the index of such array element.
{
_id: 1,
item: "TBD",
stock: 0,
info: { publisher: "1111", pages: 430 },
tags: [ "technology", "computer" ],
ratings: [ { by: "ijk", rating: 4 }, { by: "lmn", rating: 5 } ],
reorder: false
}
My Question: How should I write the db.collection.update() function? This is my unsuccessful attempt:
db.collection.update({
ratings.by: {
$elemMatch: {
$eq: 'ijk'
}
}
}, {
$set: {
// don't know which index to set. How should I modify this line?
ratings.rating: 6
}
}, {
multi: true
});