I have a user model something like this
{
_id:"something",
email:"[email protected]",
contacts:[
{_id:"123",status:"PENDING"},
{_id:"456",status:"PENDING"},
{_id:"789",status:"PENDING"}
]
}
And I have an id of one of the user's contacts "123" and I want to update that specific contact's status from "PENDING" to "SUCCESSFUL". How can I do that?
CodePudding user response:
Easiest way is with the array identifier $, like so:
db.collection.updateOne({
email: "[email protected]",
"contacts._id": "123"
},
{
"$set": {
"contacts.$.status": "SUCCESSFUL"
}
})
The array identifier updates the first element of the array that matches the query.
CodePudding user response:
db.collection.updateOne({ _id: "something" }, { contacts: [{ _id: "123", status: "SUCCESSFUL" }] }, function (err, res) {
})