Mongodb $[](位置运算符)不在猫鼬中工作
mongodb版本3.6中添加了更新运算符。但它在猫鼬身上不起作用 我想将某个特定用户的Mongodb $[](位置运算符)不在猫鼬中工作,mongodb,mongoose,Mongodb,Mongoose,mongodb版本3.6中添加了更新运算符。但它在猫鼬身上不起作用 我想将某个特定用户的allTasks数组的所有元素更新为paid:0到paid:1 我使用的查询是: User.update({ _id: userId, "allTasks.paid":0 },{ $set : { "allTasks.$[].paid":1 } }) UserSchema var UserSchema =
allTasks
数组的所有元素更新为paid:0
到paid:1
我使用的查询是:
User.update({
_id: userId,
"allTasks.paid":0
},{
$set : {
"allTasks.$[].paid":1
}
})
UserSchema
var UserSchema = mongoose.Schema({
allTasks: [{
paid: Number // 0: unpaid, 1: paid
//other fields
}],
//other fields
});
上述查询不起作用,有人能告诉我,我是否遗漏了什么或做错了什么吗?对于其他面临相同问题的人: 问题是
Mongodb
和mongoose
版本
- MongoDB版本应为3.6+
- Mongoose版本需要为5.x或更高版本
setFeatureCompatibilityVersion:3.6
来自答案:
当mongodb从较低版本切换到较高版本时,您必须为您的mongodb设置
启用或禁用保留与不兼容数据的功能
MongoDB的早期版本。您只能发布
针对管理数据库设置FeatureCompatibilityVersion
您只需在MongoShell中运行此命令即可进行设置
db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
你的猫鼬版本是什么?它的
4.13.14
。我认为这可能是问题所在,将mongoose版本更新到5.x,并将setFeatureCompatibilityVersion
更新到3.6。。。。这正是我现在要做的。我的mongodb版本已经是3.6+。我还需要设置功能兼容性版本吗?