everyone I am new to mongodb and learning it, While practicing I got this problem trying to solve but didn't find the correct result as expected.
WriteError({ "index" : 0, "code" : 2, "errmsg" : "No array filter found for identifier 'elm' in path 'questions.$[elm].status'", "op" : { "q" : { "_id" : ObjectId("61efbcbbc88f9153b87e74c4") }, "u" : { "$set" : { "questions.$[elm].status" : "delivered" } }, "multi" : true, "upsert" : false } })
getting this error please help me.
{
questionnaireName: "Name of questionnaire 1",
questions: [
{
questionName: "Question 1",
instruction: "additional instruction",
status: "assigned",
assignedUser: "test@gmail.com",
isDeleted: false,
messageId: "12345678"
},
{
questionName: "Question 2",
instruction: "additional instruction",
status: "assigned",
assignedUser: "test@gmail.com",
isDeleted: false,
messageId: "12345678"
},
{
questionName: "Question 3",
instruction: "additional instruction",
status: "assigned",
assignedUser: "test@gmail.com",
isDeleted: true,
messageId: "12345678"
},
{
questionName: "Question 4",
instruction: "additional instruction",
status: "assigned",
assignedUser: "test@gmail.com",
isDeleted: false,
messageId: "12345678"
},
{
questionName: "Question 5",
instruction: "additional instruction",
status: "assigned",
assignedUser: "test@gmail.com",
isDeleted: false,
messageId: "12345678"
},
]
}
db.myQuestionnaire.updateMany({
_id: ObjectId("61efbcbbc88f9153b87e74c4")
}, {
$set: {
"questions.$[elm].status": "delivered"
}
}, {
multi: true,
arrayFilter: [{ "elm.messageId": "12345678", "elm.isDeleted": false, "elm.assignedUser": "test@gmail.com" }]
})
Another query that I tried
db.myQuestionnaire.updateOne({
_id: ObjectId("61efbcbbc88f9153b87e74c4"), questions: {
$elemMatch: {
messageId: "12345678",
isDeleted: false,
assignedUser: "test@gmail.com"
}
}
}, {
$set: {
"questions.$.status": "delivered"
}
})
and expecting result should be
{
questionnaireName: "Name of questionnaire 1",
questions: [
{
questionName: "Question 1",
instruction: "additional instruction",
status: "delivered",
assignedUser: "test@gmail.com",
isDeleted: false,
messageId: "12345678"
},
{
questionName: "Question 2",
instruction: "additional instruction",
status: "delivered",
assignedUser: "test@gmail.com",
isDeleted: false,
messageId: "12345678"
},
{
questionName: "Question 3",
instruction: "additional instruction",
status: "assigned",
assignedUser: "test@gmail.com",
isDeleted: true,
messageId: "12345678"
},
{
questionName: "Question 4",
instruction: "additional instruction",
status: "delivered",
assignedUser: "test@gmail.com",
isDeleted: false,
messageId: "12345678"
},
{
questionName: "Question 5",
instruction: "additional instruction",
status: "delivered",
assignedUser: "test@gmail.com",
isDeleted: false,
messageId: "12345678"
},
]
}