Angenommen, das Mongodb-Dokument (Tabelle) "Benutzer" ist
{
_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
Ich möchte die Person finden, die die Auszeichnung "Nationale Medaille" hat und im Jahr 1975 verliehen werden muss. Es könnte andere Personen geben, die diese Auszeichnung in verschiedenen Jahren erhalten.
Wie kann ich diese Person anhand der Art und des Jahres der Auszeichnung finden? So kann ich genaue Person bekommen.
Verwenden Sie $ elemMatch , um das Array eines bestimmten Objekts zu finden
quelle
Dies kann auf zwei Arten geschehen:
ElementMatch -
$elemMatch
(wie in den obigen Antworten erläutert)db.users.find ({Auszeichnungen: {$ elemMatch: {Auszeichnung: 'Turing Award', Jahr: 1977}}})
Verwenden Sie
$and
mitfind
db.getCollection ('Benutzer'). find ({"$ und": [{"Awards.Award": "Turing Award"}, {"Awards.Jahr": 1977}]})
quelle