Załóżmy, że dokument (tabela) mongodb to „users”
{
_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
Chcę znaleźć osobę, która ma nagrodę „Medal Narodowy” i musi zostać przyznana w 1975 r. Mogą być inne osoby, które otrzymają tę nagrodę w różnych latach.
Jak mogę znaleźć tę osobę na podstawie rodzaju nagrody i roku. Więc mogę znaleźć dokładną osobę.
Użyj $ elemMatch, aby znaleźć tablicę konkretnego obiektu
źródło
Można to zrobić na dwa sposoby:
ElementMatch -
$elemMatch
(jak wyjaśniono w powyższych odpowiedziach)db.users.find ({nagrody: {$ elemMatch: {award: 'Turing Award', rok: 1977}}})
Użyj
$and
zfind
db.getCollection ('users'). find ({"$ and": [{"Awards.award": "Turing Award"}, {"Awards.year": 1977}]})
źródło