我有一个这样的对象结构:
{
"_id" : ObjectId("4faaba123412d654fe83hg876"),
"user_id" : 123456,
"total" : 100,
"courses" : [
{
name: 'tech',
data: [
{ active: false, blabla: []},
{ active: false, blabla: []},
{ active: true /*change to false*/, blabla: [/* add item here*/]}
]
}
]
}
,我的目标是更新这两个字段active
并将内容推入blabla
数组中。这些东西嵌套在data
数组中。
我的尝试是过滤以tech
作为值(也是一个目标)的课程名称,找到active
= true
,然后进行更新。
代码如下:
db.getCollection('users').update({
"courses.name" : 'tech',
"courses.data.active" : true
}, {$set : {"courses.$.data.active" : false}}, {$push : {"courses.$.data.blabla": 1}})
我得到的是:
Cannot create field 'active' in element {data: [ { active: ...
我想实现的是:
data: [
{ active: false, blabla: []},
{ active: false, blabla: []},
{ active: FALSE , blabla: [1]}
]
我正在使用Mongodb的4.0.2
版。