我如何更新数组中的字段?

时间:2019-08-17 02:58:05

标签: node.js mongoose

我希望能够更改courseDetail数组中的一个对象中的一个值。

为清楚起见,这是我数据库中的示例文档

courseDetail" : [ 
    {
        "_id" : ObjectId("5d3b50413a24137c39090084"),
        "contentDetail" : [ 
            {
                "isDelete" : true,
                "_id" : ObjectId("5d3b50413a2413cffa090085"),
                "course_content" : "Robotics EV3 Mindstorms 1",
                "times_amount" : 23,
                "times" : 234,
                "unit_id" : ObjectId("5d19d2ce9e0df904f81aeefb"),
                "ex" : 30,
                "price_2" : 1000,
                "price_1" : 2000
            }, 
            {
                "isDelete" : true,
                "_id" : ObjectId("5d56c654f1d8a20e00d2f5ab"),
                "course_content" : "lever 2",
                "times_amount" : 20,
                "times" : 20,
                "unit_id" : ObjectId("5d19d2ce9e0df904f81aeefb"),
                "ex" : 20,
                "price_2" : 2000,
                "price_1" : 2000
            }
        ],
        "course_content" : "Basic"
    }
]

这是我尝试过的查询,但是,它没有按我期望的那样工作。

$set: {"courseDetail.contentDetail.isDelete": false }

1 个答案:

答案 0 :(得分:1)

由于您要更改其值的对象是数组,因此需要指定索引。在示例文档中,数组中有2个对象,因此索引为0或1。

如果要更新数组中的第一项,查询将如下所示: $set: { "courseDetail.contentDetail.0.isDelete" : false }

(注意指定索引以从数组中选择一项)

这里有一些supporting documentation for the array operator in mongodb