I have the following document:
{
"name" : "student_1",
"courses" : [
{
"name" : "Algebra",
"grades" : [ 98, 96, 92 ]
},
{
"name" : "Computers",
"grades" : [ 80 ]
}
]
}
How can I update the grades of a specified course?
For example, I want to increment some test in the course Algebra
by 10 points.
1 Answer 1
'some test', so let's say you want to add 10 to 96 :
db.student.update({name:'student_1','courses.name':'Algebra'},{$inc:{"courses.$.grades.1":10}})
In the find part, you point to the courses with name 'Algebra'. The .$
points you to that found element. Of that found element, it will change the second (.1
) value in the grades array. Using $
, you don't need to know the position of the course in the array.
-
1The
$
gives me the first element, what if I want to updateComputers
course? Do I have to know the position of the course in the array?itaied– itaied2015年09月08日 05:28:22 +00:00Commented Sep 8, 2015 at 5:28 -
In the find part, you point to the courses with name 'Algebra'. The .$ points you to that found element. Of that found element, it will change the second (.1) value in the grades array. Using ,ドル you don't need to know the position of the course in the array.aldwinaldwin– aldwinaldwin2015年09月08日 07:05:11 +00:00Commented Sep 8, 2015 at 7:05