mongodb:inc高级文档和嵌入式文档

时间:2011-08-24 16:19:46

标签: mongodb

我想增加两个值,一个在高级文档中,另一个在嵌入式文档中:

{
  studentId: "x1"
  numberOfAttending: 2

  courses: [
    {
      courseId:"y1"
      numberOfAttending: 1
    },
    {
      courseId:"y2"
      numberOfAttending: 1
    }
  ]
}

我怎么能包括参加学生和课程(upsert)的人数。我可以用一个更新查询吗?

1 个答案:

答案 0 :(得分:2)

由于courses是一个数组,所以这很难。您需要知道要更新的课程索引,然后执行以下操作:

  

{ '$inc' : {numberOfAttending : 1, 'courses.1.numberOfAttending' : 1}}

您是否考虑将其转换为单个嵌入式文档,并将courseId作为每门课程的关键?如果是这样,您可以运行这样的命令来增加两者。这不依赖于位置,因此它不会那么脆弱:

  

{ '$inc' : { numberOfAttending : 1, 'courses.y2.numberOfAttending' : 1}}