$ [](正位运算符)在猫鼬中不起作用

时间:2018-08-14 10:19:11

标签: mongodb mongoose

$[] (positional-all)更新操作符已在mongodb 3.6版中添加。但它不适用于猫鼬。

我想更新特定用户allTaskspaid : 0的{​​{1}}数组的所有元素

我正在使用的查询是:

paid :1

UserSchema

User.update({
        _id: userId,
        "allTasks.paid":0
    },{
        $set : {
            "allTasks.$[].paid":1
        }
    })

上面给出的查询无法正常工作,如果我缺少某些东西或做错了什么,谁能告诉我?

1 个答案:

答案 0 :(得分:0)

对于其他面临相同问题的人:

问题是Mongodbmongoose版本。

  • MongoDB版本应为3.6 +
  • 猫鼬版本必须为5.x或更高版本

另外,您可能需要使用setFeatureCompatibilityVersion : 3.6

来自this的答案:

当从mongodb的较低版本切换到较高版本时,必须为mongodb设置setFeatureCompatibilityVersion

  

启用或禁用与数据不兼容的持久性功能   MongoDB的早期版本。您只能发出   针对管理员数据库的setFeatureCompatibilityVersion。

您可以简单地通过在mongo shell中运行此命令来进行设置

db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )