문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

임베디드 문서 배열 쿼리하기

이 페이지의 내용

  • 배열에 중첩된 문서 쿼리
  • 문서의 배열에서 필드 쿼리 조건 지정
  • 문서 배열에 여러 조건 지정
  • MongoDB Atlas로 문서 배열 쿼리하기
  • 추가 쿼리 튜토리얼

다음 메서드를 사용하여 MongoDB에서 문서를 쿼리할 수 있습니다:

  • 프로그래밍 언어의 드라이버입니다.

  • MongoDB Atlas UI. 자세히 알아보려면 MongoDB Atlas로 문서 배열 쿼리 를 참조하세요.

  • MongoDB Compass


오른쪽 상단의 언어 선택 드롭다운 메뉴를 사용하여 다음 예제의 언어를 설정하거나 MongoDB Compass를 선택합니다.


다음 예시에서는 instock 배열의 요소가 지정된 문서와 일치하는 모든 문서를 선택합니다.

전체 포함/중첩 문서에 관한 동등성 일치는 필드 순서를 포함하여 지정된 문서와의 정확한 일치를 요구합니다. 예를 들어 다음 쿼리는 inventory 컬렉션의 어떤 문서와도 일치하지 않습니다.

배열에 중첩된 문서의 인덱스 위치를 알 수 없는 경우 배열 필드의 이름을 중첩된 문서의 점(.) 및 필드 이름과 연결합니다.

다음 예시에서는 instock 배열에서 포함된 문서 중 하나 이상의 qty 필드 값이 20 이하인 경우에 해당하는 모든 문서를 선택합니다.

점 표기법을 사용하면 배열의 특정 인덱스 또는 위치에서 문서 필드의 쿼리 조건을 지정할 수 있습니다. 배열은 제로 기반 인덱싱을 사용합니다.

참고

점 표기법을 사용하여 쿼리하는 경우 필드와 인덱스는 따옴표 안에 포함되어야 합니다.

다음 예시에서는 instock 배열이 qty 필드의 값이 20 이하인 문서를 첫 요소로 포함하는 경우에 해당하는 모든 문서를 선택합니다.

문서 배열에 중첩 필드 조건을 하나 이상 지정하는 경우 단일 문서가 이러한 조건을 충족하거나, 단일 문서를 포함하여 배열에 있는 문서 조합이 조건을 충족하도록 쿼리를 지정할 수 있습니다.

$elemMatch 연산자를 사용하여 포함된 문서 배열에 관한 여러 기준을 지정하여 하나 이상의 포함된 문서가 지정된 기준을 모두 충족하도록 합니다.

다음 예시에서는 instock 배열에 qty 필드는 5 와 같고 warehouse 필드는 A와 같은 포함된 문서를 하나 이상 보유한 문서를 쿼리합니다.

다음 예시에서는 instock 배열에 qty 필드가 10보다 크고 20과 같거나 작은 포함 문서를 하나 이상 보유한 문서를 쿼리합니다.

배열 필드의 복합 쿼리 조건에 $elemMatch 연산자가 사용되지 않는 경우 쿼리는 배열에 조건을 충족하는 요소 조합이 포함된 문서를 선택합니다.

예를 들어, 다음 쿼리는 instock 배열에 중첩된 문서 중 qty 필드가 10보다 크고 배열에 포함된 문서 중 qty 필드가 20보다 작거나 같은 문서(반드시 동일한 포함 문서일 필요는 없음)를 보유한 문서를 일치시킵니다.

다음 예시에서는 instock 배열에 qty 필드가 5와 같은 포함 문서와 warehouse 필드가 A와 같은 포함 문서를 각각 하나 이상 보유하는(반드시 동일한 포함 문서일 필요는 없음) 문서를 쿼리합니다.

이 섹션의 예제에서는 샘플 교육 데이터 세트 를 사용합니다. 샘플 데이터 세트를 MongoDB Atlas 배포서버에 로드하는 방법을 알아보려면 샘플 데이터 로드를 참조하세요.

MongoDB Atlas에서 문서 배열을 쿼리하려면 다음 단계를 수행합니다.

1
  1. MongoDB Atlas UI의 Database 사이드바에서 버튼을 클릭합니다.

  2. 샘플 데이터가 포함된 데이터베이스 배포서버의 경우 Browse Collections을 클릭합니다.

  3. 왼쪽 탐색 창에서 sample_training 데이터베이스를 선택합니다.

  4. grades 컬렉션을 선택합니다.

2

Filter 필드에 쿼리 필터 문서를 지정합니다. 쿼리 필터 문서는 쿼리 연산자를 사용하여 검색 조건을 지정합니다.

다음 쿼리 필터 문서를 Filter 검색 바에 복사합니다.

{ scores: { type: "exam" } }
3

이 쿼리 필터는 sample_training.grades 컬렉션에서 scores 필드가 exam 점수 유형을 포함하는 모든 문서를 반환합니다.

추가 쿼리 예시는 아래에서 확인 가능합니다.

← 배열 쿼리