数据结构
/* 1 */
{
"_id" : ObjectId("60e514ac808f8daa7c644910"),
"is_delete" : false,
"name" : "内容",
"content" : {
"grades" : [
{
"class" : [
{
"class" : "class1",
"content" : "content1"
}
]
}
]
},
"create_time" : ISODate("2021-07-07T02:42:53.207Z"),
"update_time" : ISODate("2021-07-07T09:07:58.300Z")
}
修改
db.getCollection('表名').updateMany(
{
name: "内容",
is_delete:false,
'content.grades.class.class': 'class1'
}
,{
$set: {
'content.grades.$[].class.$[idx1].class': 'class2'
'content.grades.$[].class.$[idx1].content': 'content2'
}
}
,{
arrayFilters: [
{
'idx1.class': {$in: ['class1']}
}]
}
)
{}:过滤条件
{$set:{}}:修改内容
{arrayFilters:[]}:过滤条件(过滤数组里面要修改的内容)
$[idx] 中的idx 可以自定义名字,只需要arrayFilter中名字一样就可以,如 $[i], $[j]
不止updateMany可以用,update、findAndUpdate、findAndModify 等也可以用
可以与$[] 一起使用,需保证数组中的所有元素都满足后面的条件