首页 > 解决方案 > MongoDB 数组过滤器

问题描述

我正在尝试使用数组过滤器更新嵌套数组,首先我尝试使用基本的数组过滤器更新查询,我从 mongodb 教程中复制粘贴了更新查询,但我收到如下错误:错误:“没有数组过滤器在路径 'grades.$[elem].mean' 中找到标识符 'elem' “我正在使用 'db version v4.0.2' 和 'MongoDB shell version 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”的数组过滤器

标签: mongodb-query

解决方案


阅读这个 StackOverflow 问题的评论:

数组过滤器不起作用

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


推荐阅读