我希望能够更改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 }
答案 0 :(得分:1)
由于您要更改其值的对象是数组,因此需要指定索引。在示例文档中,数组中有2个对象,因此索引为0或1。
如果要更新数组中的第一项,查询将如下所示:
$set: { "courseDetail.contentDetail.0.isDelete" : false }
(注意指定索引以从数组中选择一项)
这里有一些supporting documentation for the array operator in mongodb。