it-swarm.com.de

Wie man in einem Array von Objekten in Mongodb sucht

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 "Nation Medal" hat und die im Jahr 1975 verliehen werden muss. Es könnte andere Personen geben, die diese Auszeichnung in verschiedenen Jahren haben.

Wie finde ich diese Person anhand von Auszeichnungstyp und Jahr? So kann ich genaue Person bekommen.

177
vcxz

Der richtige Weg ist:

db.users.find({awards: {$elemMatch: {award:'National Medal', year:1975}}})

$elemMatch ermöglicht es Ihnen, mehr als eine Komponente innerhalb desselben Array-Elements zuzuordnen.

Ohne $elemMatch mongo wird in einigen Jahren nach Benutzern mit Nationaler Medaille und in den 1975er Jahren nach Preisen suchen, aber nicht nach Benutzern mit Nationaler Medaille im Jahr 1975.

Weitere Informationen finden Sie unter MongoDB $ elemMatch Documentation . Weitere Informationen zum Abfragen von Dokumenten mit Arrays finden Sie unter Read Operations Documentation .

316

Verwenden Sie $ elemMatch, um das Array eines bestimmten Objekts zu finden

db.users.findOne({"_id": id},{awards: {$elemMatch: {award:'Turing Award', year:1977}}})
19
KARTHIKEYAN.A