我正在尝试使用数组过滤器更新嵌套数组,首先我要尝试基本的数组过滤器更新查询,我从mongodb教程中复制并粘贴了更新查询,但是我遇到了类似以下错误:错误:“在路径“ grades。$ [elem] .mean”中找不到标识符“ elem”的数组过滤器 “而我正在使用 '数据库版本v4.0.2'和 'MongoDB Shell版本v4.0.2
这是我的收藏详细信息,
{
"_id" : 1,
"grades" : [
{
"grade" : 80,
"mean" : 75,
"std" : 6
},
{
"grade" : 85,
"mean" : 90,
"std" : 4
},
{
"grade" : 85,
"mean" : 85,
"std" : 6
}
]
}
//End of First Record
{
"_id" : 2,
"grades" : [
{
"grade" : 90,
"mean" : 75,
"std" : 6
},
{
"grade" : 87,
"mean" : 90,
"std" : 3
},
{
"grade" : 85,
"mean" : 85,
"std" : 4
}
]
}
//End of Second record
更新查询:
db.getCollection('students2').update(
{ },
{ $set: { "grades.$[elem].mean" : 100 } },
{
multi: true,
arrayFilters: [ { "elem.grade": { $gte: 85 } } ]
}
)
抛出错误: 在路径“ grades。$ [elem] .mean”中找不到标识符“ elem”的数组过滤器
答案 0 :(得分:0)
阅读此StackOverflow问题的评论:
在“旧壳”中不起作用。我正在使用Robo 3T客户端并遇到相同的问题。该外壳显然正在删除arrayFilters对象。