I have an array with nested objects. If the message is "Hi", I want to change it to "Hello". Here is my array:
[{
name : "name",
email : "email",
conversation : [
{
message : "Hi",
seenBy : "karen"
},
{
message : "Hi",
seenBy : "leo"
},
{
message : "Goodbye",
seenBy : "mark"
}
]
},
{
name : "name",
email : "email",
conversation : [
{
message : "Hi",
seenBy : "karen"
},
{
message : "Listen",
seenBy : "leo"
},
{
message : "Sit",
seenBy : "mark"
},
{
message : "Hi",
seenBy : "mark"
}
]
}]
Here's have I have tried:
db.updateMany({ conversation: { $elemMatch: { message: "Hi" } } },
{ $set: {"items.$[].message": "Hello" }},
{multi: true}
)
But it updates all messages to "Hello" even messages that are not "Hi"