mongodb: inc документ высокого уровня и встроенный документ - PullRequest
1 голос
/ 24 августа 2011

Я хочу увеличить два значения, одно в документе высокого уровня и одно во встроенном документе:

{
  studentId: "x1"
  numberOfAttending: 2

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

Как я могу включить количество посещений для студента и для курса (upsert). и могу ли я сделать это с помощью одного запроса на обновление?

1 Ответ

2 голосов
/ 24 августа 2011

Это будет сложно, так как courses - это массив. Вам нужно будет знать индекс курса, который вы хотите обновить, а затем сделать что-то вроде:

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

Задумывались ли вы над тем, чтобы переключить его на один встроенный документ с ключом courseId для каждого курса? Если это так, вы можете запустить такую ​​команду, чтобы увеличить оба. Это не зависит от позиции, поэтому будет менее хрупким:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...