我想增加两个值,一个在高级文档中,另一个在嵌入式文档中:
{
studentId: "x1"
numberOfAttending: 2
courses: [
{
courseId:"y1"
numberOfAttending: 1
},
{
courseId:"y2"
numberOfAttending: 1
}
]
}
我怎么能包括参加学生和课程(upsert)的人数。我可以用一个更新查询吗?
答案 0 :(得分:2)
由于courses
是一个数组,所以这很难。您需要知道要更新的课程索引,然后执行以下操作:
{ '$inc' : {numberOfAttending : 1, 'courses.1.numberOfAttending' : 1}}
您是否考虑将其转换为单个嵌入式文档,并将courseId
作为每门课程的关键?如果是这样,您可以运行这样的命令来增加两者。这不依赖于位置,因此它不会那么脆弱:
{ '$inc' : { numberOfAttending : 1, 'courses.y2.numberOfAttending' : 1}}