Как искать в массиве объекта в mongodb

Предположим, что пользовательский документ (таблица) mongodb

{ _id: 1, name: { first: 'John', last: 'Backus' }, birth: new Date('Dec 03, 1924'), death: new Date('Mar 17, 2007'), contribs: [ 'Fortran', 'ALGOL', 'Backus-Naur Form', 'FP' ], awards: [ { award: 'National Medal', year: 1975, by: 'NSF' }, { award: 'Turing Award', year: 1977, by: 'ACM' } ] } and other object(person)s 

Я хочу найти человека, который получил премию «Национальная медаль» и должен быть награжден в 1975 году. В разные годы могут быть другие лица, которые получили эту наgradleу.

Как я могу найти этого человека, используя тип наgradleы и год. Поэтому я могу получить точного человека.

Правильный путь:

 db.users.find({awards: {$elemMatch: {award:'National Medal', year:1975}}}) 

$elemMatch позволяет сопоставлять более одного компонента внутри одного и того же элемента массива.

Без $elemMatch mongo будет искать пользователей с Национальной медалью в течение некоторого года и некоторой наgradleой в 1975-м, но не для пользователей с Национальной медалью в 1975 году.

Дополнительную информацию см. В документации MongoDB $ elemMatch . Дополнительную информацию о запросе документов с помощью массивов см. В документации на чтение операций .

Используйте $ elemMatch, чтобы найти массив определенного объекта

 db.users.findOne({"_id": id},{awards: {$elemMatch: {award:'Turing Award', year:1977}}}) 
  • Сравнение mongoose _id и строк
  • Как установить зависимости одноранговых связей npm автоматически?
  • Ошибка AWS lambda api-шлюза «Отказ от ложного ответа Lambda»
  • Использование Node.js только против использования Node.js с Apache / Nginx
  • Как определить текущую операционную систему с помощью Node.js
  • Загрузка файлов с помощью Express 4.0: req.files undefined
  • Управление сеансами в Node.js?
  • Как вернуть результаты Mongoose из метода поиска?
  • Совместное использование сеансов между php и узлом
  • Каков пример простейшего возможного примера Socket.io?
  • Как использовать socket.io в express-маршрутах?
  • Interesting Posts

    ANDROID: идентификатор электронной почты для почтового клиента электронной почты пуст в android-parse

    Haskell: Что такое нормальная форма слабой головы?

    В C #, почему String является ссылочным типом, который ведет себя как тип значения?

    Как выполнить «хост-сервер nslookup»

    Как разрешить пользователям проверять последнюю версию приложения внутри приложения?

    Получение текста из узла

    Какая версия javac построила мою банку?

    Как загрузить внешние изображения в Excel?

    Перерыв в модуле classа или разрыв по необработанным ошибкам (ошибка проверки ошибок VB6, настройка параметров в среде IDE)

    Отключить панель сообщений с просьбой разрешить скрытый плагин

    Почему я вижу красные точки на моем ЖК-экране?

    Как преобразовать объект JSON в пользовательский объект C #?

    Предотrotation использования System.exit () API

    Переопределить домашнюю и обратную кнопку – это случай, когда логическое значение true

    Как получить современный интерфейс Firefox в Windows 8?

    Давайте будем гением компьютера.