我目前正在尝试通过使用以下数据,将单个用户的数组(影片列表)中ID为“ 12345”的对象的值(状态)从“计划观看”更新为“观看”
{
_id: "5d4813c0a14fcd44f83feda8",
userName : "Dave",
movielist :
[
{
_id:"5d29c4922ce984356cea8b48",
movie:
{
_id:"12345"
title:"The Avengers",
movieLength:"143min",
}
status:"Plan to watch"
},
{
_id:"5d276dd65f27682c26c6041b",
movie:
{
_id:"5d28ca94e2e19d6cbaecdef9"
title:"The Avengers",
movieLength:"143min",
}
status:"Completed"
}
]
}
我尝试使用下面的猫鼬更改值:
userModel.findByIdAndUpdate(5d4813c0a14fcd44f83feda8,{movielist :{id:12345}},{$set:{movielist :{status:"Completed"}}},callback)
但是我得到的是我试图更新的ID为“ 12345”的对象的属性状态已删除,如下所示:
{
_id: "5d4813c0a14fcd44f83feda8",
userName : "Dave",
movielist :
[
{
_id:"5d29c4922ce984356cea8b48",
movie:
{
_id:"12345"
title:"The Avengers",
movieLength:"143min",
}
},
{
_id:"5d276dd65f27682c26c6041b",
movie:
{
_id:"5d28ca94e2e19d6cbaecdef9"
title:"The Avengers",
movieLength:"143min",
}
status:"Completed"
}
]
}
我尝试使用下面的猫鼬更改值: 以下是我用于此对象的架构:
userSchema = schema({
userName: String,
movielist : [{id :{type: mongoose.Schema.Types.ObjectId,
ref: 'movies', required : true}, status : String}],
});
我可以知道我犯了什么可怕的错误吗?
答案 0 :(得分:1)
请更新您的查询:
userModel.findOneAndUpdate({_id: ObjectId('5d4813c0a14fcd44f83feda8'), 'movielist.movie._id': '12345'}, {$set:{'movielist.$.status' :'Completed'}}, {returnNewDocument : true},callback)
答案 1 :(得分:1)
您能写出统计信息吗?
userSchema = schema({
userName: String,
movielist : [{id :{type: mongoose.Schema.Types.ObjectId,
ref: 'movies', required : true}, status: String}],
});
答案 2 :(得分:0)
因此,在进行了一些研究以及查看了一些其他stackoverflow问题之后,我修改了你们给我的答案,并通过FindOneAndUpdate之后的筛选器部分中的猫鼬运算符$ elemMatch将状态更改为“已完成”。 UserId,只想感谢所有指导我的人,对我的错别字感到非常抱歉,对此我感到很遗憾