Misalkan dokumen mongodb (tabel) 'pengguna'
{
_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
Saya ingin mencari orang yang memiliki penghargaan 'Medali Nasional' dan harus diberikan pada tahun 1975. Mungkin ada orang lain yang memiliki penghargaan ini di tahun yang berbeda.
Bagaimana saya dapat menemukan orang ini menggunakan jenis penghargaan dan tahun. Jadi saya bisa mendapatkan orang yang tepat.
Gunakan $ elemMatch untuk menemukan larik objek tertentu
sumber
Dapat melakukan ini dengan dua cara:
ElementMatch -
$elemMatch
(seperti yang dijelaskan dalam jawaban di atas)db.users.find ({penghargaan: {$ elemMatch: {award: 'Turing Award', tahun: 1977}}})
Gunakan
$and
denganfind
db.getCollection ('pengguna'). find ({"$ dan": [{"awards.award": "Turing Award"}, {"awards.year": 1977}]})
sumber