Supposons que le document mongodb (table) 'users' soit
{
_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
Je veux trouver la personne qui a le prix «Médaille nationale» et doit être décerné en 1975. Il pourrait y avoir d'autres personnes qui ont ce prix dans différentes années.
Comment puis-je trouver cette personne en utilisant le type de récompense et l'année. Je peux donc obtenir la personne exacte.
Utilisez $ elemMatch pour trouver le tableau d'un objet particulier
la source
Peut le faire de deux manières:
ElementMatch -
$elemMatch
(comme expliqué dans les réponses ci-dessus)db.users.find ({awards: {$ elemMatch: {award: 'Turing Award', année: 1977}}})
Utiliser
$and
avecfind
db.getCollection ('users'). find ({"$ and": [{"awards.award": "Turing Award"}, {"awards.year": 1977}]})
la source