MongoDB阵列过滤器

时间:2019-06-10 08:45:11

标签: mongodb-query

我正在尝试使用数组过滤器更新嵌套数组,首先我要尝试基本的数组过滤器更新查询,我从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”的数组过滤器

1 个答案:

答案 0 :(得分:0)

阅读此StackOverflow问题的评论:

arrayFilters not working

在“旧壳”中不起作用。我正在使用Robo 3T客户端并遇到相同的问题。该外壳显然正在删除arrayFilters对象。