Running mongod
3.6 and attempting to use this example.
Here is the sample data:
> db.students2.find().pretty()
{
"_id" : 1,
"grades" : [
{
"grade" : 80,
"mean" : 75,
"std" : 8
},
{
"grade" : 85,
"mean" : 90,
"std" : 6
},
{
"grade" : 85,
"mean" : 85,
"std" : 8
}
]
}
{
"_id" : 2,
"grades" : [
{
"grade" : 90,
"mean" : 75,
"std" : 8
},
{
"grade" : 87,
"mean" : 90,
"std" : 5
},
{
"grade" : 85,
"mean" : 85,
"std" : 6
}
]
}
I am attempting to use the all positional operator as specified in the example:
> db.students2.update({}, { $inc: { "grades.$[].std" : -2 } }, {multi: true})
WriteResult({
"nMatched" : 0,
"nUpserted" : 0,
"nModified" : 0,
"writeError" : {
"code" : 16837,
"errmsg" : "cannot use the part (grades of grades.$[].std) to traverse the element ({grades: [ { grade: 80.0, mean: 75.0, std: 8.0 }, { grade: 85.0, mean: 90.0, std: 6.0 }, { grade: 85.0, mean: 85.0, std: 8.0 } ]})"
}
})
Why is this error message occurring? Am I not following the documentation properly?