【问题标题】:Update field of object in array of array with mongoose用猫鼬更新数组数组中对象的字段
【发布时间】:2016-06-27 15:28:35
【问题描述】:

我有一个带有这个模型的 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,我需要更新部分数组的活动字段

我正在这样做:

User.findOneAndUpdate({_id: userId, 'chapters.sections':{$elemMatch: {id:sectionId}}}, {$set: {'sections.$.active': false}}).exec(function (err, doc) {console.log(doc)});

活动字段不变。

我该如何做这个查询?

谢谢

【问题讨论】:

    标签: mongodb mongoose mongodb-query


    【解决方案1】:

    我没有你的数据,所以运行这个:

    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)});
    

    希望对你有帮助

    【讨论】:

    • 嗨,我运行这个查询,响应是所有对象进入章节数组。我只需要与 id 匹配的部分数组。
    • 嗨蒂姆,回复很长,在这里发帖,但和第一个帖子一样。数组更长(15 个对象),但我只需要更新与sections.id 匹配的数组对象 此查询不只过滤具有sections.id 的对象,它检索数组中的所有对象。
    • 通过这个查询我有一个 mongo 错误 16837 和这个消息“不能使用部分(champles.sections.0.active 的章节)来遍历元素”
    猜你喜欢
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 2021-12-28
    • 2022-08-18
    • 2016-02-28
    相关资源
    最近更新 更多