Suponha que o 'mongodb' do documento (tabela) 'users' seja
{
_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
Quero encontrar a pessoa que recebeu o prêmio 'Medalha Nacional' e deve ser premiada no ano de 1975. Pode haver outras pessoas que tenham esse prêmio em anos diferentes.
Como posso encontrar essa pessoa usando o tipo de prêmio e o ano. Para que eu possa ter uma pessoa exata.
Use $ elemMatch para encontrar a matriz de um objeto específico
fonte
Pode fazer isso de duas maneiras:
ElementMatch -
$elemMatch
(conforme explicado nas respostas acima)db.users.find ({prêmios: {$ elemMatch: {prêmio: 'Prêmio Turing', ano: 1977}}})
Use
$and
comfind
db.getCollection ('users'). find ({"$ and": [{"awards.award": "Prêmio de Turing"}, {"awards.year": 1977}]})
fonte