我有一个mongo db使用这个模型:
_id: ObjectId("5705005b240166e927f841cb")
chapters: {
type: Array,
default: [
{
"id":"capitulo_0",
"active": true,
"title": "CAPÍTULO 0 - INTRODUCCIÓN",
"sections": [
{
"title": "Institucional",
"type": "Video",
"id": "d74fb24654a2",
"url": "jPTG5P0528k",
"active": true
}
]
},
{
"id":"capitulo_1",
"active": false,
"title": "CAPÍTULO 1 - BIENVENIDA",
"sections": [
{
"title": "Introducción",
"type": "Video",
"url": "j2TG1P05k8k",
"id": "b2454d7f66de",
"active": false
}
]
},
...
]
}
对于查询,我有user_id和节的id,我需要更新sections数组的活动字段。
我这样做:
User.findOneAndUpdate({_id: userId, 'chapters.sections':{$elemMatch: {id:sectionId}}}, {$set: {'sections.$.active': false}}).exec(function (err, doc) {console.log(doc)});
活动字段不会更改。
我该怎么做这个查询?
感谢' S
答案 0 :(得分:0)
我没有你的数据所以运行这个:
User.findOne({_id: userId, 'chapters.sections':{$elemMatch: {id:sectionId}}})
并查看是否收到回复并找到记录,因为您的更新看起来很好。
<强>更新强>
在查看您的数据后,我认为您在查询中缺少章节
User.findOneAndUpdate({_id: userId, 'chapters.sections':{$elemMatch: {id:sectionId}}}, {$set: {'chapters.sections.$.active': false}}).exec(function (err, doc) {console.log(doc)});
我希望这会有所帮助