Предположим, что документ 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 году. Могут быть и другие лица, которые получили эту награду в разные годы.
Как я могу найти этого человека, используя тип премии и год. Так что я могу получить точную личность.
Используйте $ elemMatch, чтобы найти массив определенного объекта
источник
Можно сделать это двумя способами:
ElementMatch -
$elemMatch
(как объяснено в ответах выше)db.users.find ({награды: {$ elemMatch: {награда: 'премия Тьюринга', год: 1977}}})
Использовать
$and
сfind
db.getCollection ('users'). find ({"$ and": [{"awards.award": "Премия Тьюринга"}, {"awards.year": 1977}]})
источник