Supongamos que el documento mongodb (tabla) 'usuarios' es
{
_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
Quiero encontrar a la persona que tiene el premio 'Medalla Nacional' y debe ser galardonado en el año 1975. Podría haber otras personas que tengan este premio en diferentes años.
¿Cómo puedo encontrar a esta persona usando el tipo de premio y el año? Entonces puedo obtener una persona exacta.
Use $ elemMatch para encontrar la matriz de un objeto en particular
fuente
Puede hacer esto de dos maneras:
ElementMatch -
$elemMatch
(como se explica en las respuestas anteriores)db.users.find ({premios: {$ elemMatch: {premio: 'Premio Turing', año: 1977}}})
Usar
$and
confind
db.getCollection ('usuarios'). find ({"$ y": [{"awards.award": "Premio Turing"}, {"awards.year": 1977}]})
fuente