数组中的MongoDB更新对象

ita*_*ied 3 mongodb array json

我有以下文件:

{
    "name" : "student_1",
    "courses" : [
        {
            "name" : "Algebra",
            "grades" : [ 98, 96, 92 ]
        },
        {
            "name" : "Computers",
            "grades" : [ 80 ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

如何更新指定课程的成绩?例如,我想将课程中Algebra的某些测试增加10 分。

ald*_*win 7

“一些测试”,所以假设您想将 10 添加到 96 :

db.student.update({name:'student_1','courses.name':'Algebra'},{$inc:{"courses.$.grades.1":10}})
Run Code Online (Sandbox Code Playgroud)

在查找部分,您指向名为“代数”的课程。该.$点,你给找到的元素。在找到的元素中,它将更改.1等级数组中的第二个 ( ) 值。使用$,您不需要知道课程在数组中的位置。