복붙노트

[MONGODB] MongoDB를에 개체의 배열에서 검색하는 방법

MONGODB

MongoDB를에 개체의 배열에서 검색하는 방법

(테이블) '사용자'인 MongoDB의 문서를 가정

{
  _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

나는 상 '국가 메달을'가지고 있으며, 1975 년에 수여해야하는 사람을 찾으려면 다른 년이 상을 가지고 다른 사람이있을 수 있습니다.

어떻게 상 유형 및 연도를 사용하여이 사람을 찾을 수 있습니다. 그래서 정확한 사람을 얻을 수 있습니다.

해결법

  1. ==============================

    1.올바른 방법은 다음과 같습니다

    올바른 방법은 다음과 같습니다

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

    $ elemMatch는 같은 배열 요소 내에서 하나 개 이상의 구성 요소를 일치시킬 수 있습니다.

    $ elemMatch 몽고없이 몇 년 국립 메달을 가진 사용자와 1975s에서 어떤 상을 볼 수 있지만 1975 년 국립 메달 사용자를위한 것입니다.

    추가 정보를 원하시면 MongoDB를 $ elemMatch 문서를 참조하십시오. 배열 문서를 쿼리에 대한 자세한 내용은 읽기 작업 문서를 참조하십시오.

  2. ==============================

    2.사용 $ elemMatch은 특정 객체의 배열을 찾을 수

    사용 $ elemMatch은 특정 객체의 배열을 찾을 수

    db.users.findOne({"_id": id},{awards: {$elemMatch: {award:'Turing Award', year:1977}}})
    
  3. from https://stackoverflow.com/questions/14040562/how-to-search-in-array-of-object-in-mongodb by cc-by-sa and MIT license