mongo update使用arrayFilters和标识符结果"不能使用该部分来遍历元素"

时间:2018-01-22 21:59:53

标签: mongodb

在文档here之后,我正在尝试更新是否满足条件并且我得到上述错误。我有一个对象数组,如果条件满足,我想更新嵌套对象的特定字段。以下是我到目前为止的情况:

示例文档

"userImages" : [
    {
        "profilePicture" : "https://myprofilepic.jpg"
    },
    {
        "favoritePicture" : "https://myfavepic.jpg"
    }
 ]

代码

const imageToChange = 'https://noLongerValidImage';

const query = { _id };

const updateQuery = { 
  '$set': { 
    'userImages.$[elem].profilePicture': 'https://newProfilePic.png' 
  } 
};

const options = {
  "multi":false,
  "upsert":false,
  "arrayFilters":[{
    "elem.profilePicture":imageToChange
  }]
}

我没有看到任何错误,这本身很麻烦,因为我无法解决这个问题:

  

无法使用该部分(userImages的用户图像。$ [elem] .profilePicture)   遍历元素({userImages:[{profilePicture:   " https://myprofilepic.jpg",favoritePicture:   " https://myprofilepic.jpg" }

以下是正在运行的查询:

db.collection.update(
   query,
   updateQuery,
   options
)

1 个答案:

答案 0 :(得分:0)

两个问题:

  1. 您确定此版本的MongoDB支持过滤后的位置运算符吗? This page表示您需要3.6

  2. '=COUNTIFS(Table8[Reported Date],AND(Table8[Reported Date]<='Ticket Summary'!F61, Table8[Reported Date]< TODAY()),Table8[Business Area], "Corporate", Table8[Application], "CS")' 变量的值是什么?

    featureCompatibilityVersion
  3. 为了设置它运行:

    > db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
    { "featureCompatibilityVersion" : { "version" : "3.4" }, "ok" : 1 }`
    

    版本之间的不兼容性如下所述: https://docs.mongodb.com/manual/release-notes/3.4-compatibility/