【发布时间】:2019-09-14 10:25:16
【问题描述】:
我正在使用猫鼬 findOneAndUpdate() 在 mongodb 中,我有一个数据库,其中数组中的对象如下所示:
患者模型
{
"_id" : ObjectId("5cb939a3ba1d7d693846136c"),
"myArray" : [
{
"name" : "PW6178281935-20190425",
"treatment" : "beauty",
"value" : 0 <- i want to update this
},
{
"name" : "PW6178281935-24142444",
"treatment" : "muscle",
"value" : 0
}
]
},
{
"_id" : ObjectId("5cc123a3bb2d3123a932475f"),
"myArray" : [
{
"name" : "PW6178281935-43535555",
"treatment" : "helps",
"value" : 0
},
{
"name" : "PW6178281935-92732978",
"treatment" : "documents",
"value" : 0
}
]
}
我想用_id =“5cb939a3ba1d7d693846136c”的治疗=“美丽”来更新对象的值
在架构中“值”的默认值为 0
我试过了,但值没有得到更新
patients.findOneAndUpdate({$and:[{'patients._id' : 5cb939a3ba1d7d693846136c}, {'myArray.treatment' : beauty}]}, { $set: { 'myArray.$.value': 424214 } }, { new: true });
我做错了吗?
编辑:
Frank Rose 的回答是对的,arrayFilters 对我不起作用的原因是我正在使用的项目使用 mongoose 4.4,它还不支持 mongoDB 的 arrayFilters。如果你想在你的项目中使用 arrayFilters使用猫鼬版本 5 或更高版本。升级到猫鼬 5.5 后,我能够编辑对象
【问题讨论】: