MongoDB如何更新嵌套字段artist为A3的文档的review值为10
错误原因梳理
- 集合名不匹配:初始化数据写入的是
filmes集合,你之前的更新语句操作的是不存在的movies集合 - 嵌套字段查询逻辑错误:
{cast:{artist:"A3"}}的写法是要求cast子文档和传入的结构完全一致,你的cast字段还有director属性,自然匹配不到。查询嵌套字段的单个属性需要用点语法。 - 语法拼写错误:第二条语句把更新操作符
$set错写成了$ste,同时没有加嵌套路径直接查artist:"A3",只会匹配顶层的artist字段,命中不到数据。 - 范围配置错误:如果用
update方法更新多条数据,需要额外传入{multi:true}参数,否则默认只更新第一条匹配到的文档,更推荐直接用updateMany方法操作批量更新。
正确实现代码
db.filmes.updateMany( { "cast.artist": "A3" }, { $set: { review: 10 } } )
验证方法
执行更新后可以运行以下语句校验结果:
db.filmes.find({"cast.artist": "A3"}, {review: 1, title: 1, _id: 0})
返回结果如下即说明更新成功:
{ "title" : "movie5", "review" : 10 }
内容的提问来源于stack exchange,提问作者lukas
相关产品推荐
相关产品推荐

