Поиск в массиве в конкретном документе в mongodb - PullRequest
0 голосов
/ 05 августа 2010

У меня есть коллекция документов следующего типа (взято из Документы БД Mongo: Схема для ознакомления):

db.students
{ name: 'Jane',
  scores: [
              { course: 'math', grade: 'A'},
              { course: 'biology', grade: 'B'},
              { course: 'english', grade: 'C'}
          ]
}

Если у меня уже есть документ для Джейн, каков наилучший способ получить ее оценку, например? математика?

Единственное руководство, которое мне удалось найти в документах, касается поиска, например, всех учащихся с оценкой А по математике, но в этом случае у меня уже есть документ студента, который я хочу запросить.

Единственный способ доступа к массивам, который я видел, - это индекс массива, например, scores [0] .grade, но я не обязательно знаю индекс массива.

Спасибо

edit: я знаю, что мог бы просто пройтись по массиву, чтобы найти правильную запись, но мне было интересно, есть ли лучший способ.

Ответы [ 2 ]

0 голосов
/ 04 июня 2012

Если вы используете версию MongoDB 2.2, вы можете использовать функцию агрегирования 'match':

Подробнее см. здесь .

0 голосов
/ 06 августа 2010

К сожалению, в MongoDB нет простого способа выполнить этот тип запроса. Новый оператор $ slice поможет вам ограничить количество возвращаемых результатов, но, очевидно, это полезно только в том случае, если вы знаете позицию желаемого курса.

Я задал похожий вопрос в Монго Google Group ...

http://groups.google.com/group/mongodb-user/browse_thread/thread/ec7144cf03d8e724/d09f5b8eb9d6a990?lnk=gst&q=%24slice#d09f5b8eb9d6a990

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