문서 메뉴

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

$in

이 페이지의 내용

  • 호환성
  • 구문
  • Atlas Search을 사용하여 Atlas에서 데이터 쿼리하기
  • 예제
  • $in 연산자를 사용하여 값 일치시키기
  • $in 연산자를 사용하여 배열의 값 일치시키기
  • 정규식과 함께 $in 연산자 사용하기
$in

$in 연산자는 필드 값이 지정된 배열의 값과 같은 문서를 선택합니다.

다음 환경에서 호스팅되는 배포에 $in 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

$in 표현식을 지정하려면 다음 프로토타입을 사용합니다.

{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }

다양한 BSON types 값을 비교하려면 지정된 BSON 비교순서를 참조하십시오.

field 에 배열이 있는 경우 $in 연산자는 field 가 지정된 배열의 값과 일치하는 요소를 하나 이상 포함하는 배열을 가진 문서를 선택합니다(예: <value1>, <value2> 등).

$in 연산자는 각 매개 변수를 컬렉션의 각 문서와 비교하므로 성능 문제가 발생할 수 있습니다. 성능을 개선하려면 다음을 수행합니다.

  • 에 전달되는 매개 변수의 수를 제한하는 것이 좋습니다.
    $in 연산자를 수십 개의 값으로 변환합니다. 매개변수를 수백 개 이상 사용하면 쿼리 성능에 부정적인 영향을 미칠 수 있습니다.
  • 쿼리하려는 field에 인덱스를 만듭니다.

참고

이 문서에서는 $in 쿼리 연산자에 대해 설명합니다. $in 애그리게이션 연산자에 대해서는 $in(애그리게이션)을 참조하세요.

MongoDB Atlas 에 저장된 데이터의 경우 쿼리를 실행할 때 Atlas Search in 연산자를 사용할 $search 수 있습니다. } 다음에 $in $search 를 실행하는 것은 in 연산자를 사용하여 를 실행하는 것보다 성능이 떨어집니다.$search

이 연산자의 Atlas Search 버전에 대해 자세히 알아보려면 Atlas 설명서에서 in 연산자를 참조하세요.

inventory 컬렉션을 생성합니다.

db.inventory.insertMany( [
{ "item": "Pens", "quantity": 350, "tags": [ "school", "office" ] },
{ "item": "Erasers", "quantity": 15, "tags": [ "school", "home" ] },
{ "item": "Maps", "tags": [ "office", "storage" ] },
{ "item": "Books", "quantity": 5, "tags": [ "school", "storage", "home" ] }
] )

다음 예를 고려하십시오.

db.inventory.find( { quantity: { $in: [ 5, 15 ] } }, { _id: 0 } )

이 쿼리는 quantity 필드의 값이 5 또는 15인 inventory 컬렉션의 모든 문서를 선택합니다.

{ item: 'Erasers', quantity: 15, tags: [ 'school', 'home' ] },
{ item: 'Books', quantity: 5, tags: [ 'school', 'storage', 'home' ] }

연산자를 $or 사용하여 이 쿼리를 작성할 수 있지만 $in 동일한 필드에서 동등성 검사를 수행할 $or 때는 연산자 대신 연산자를 사용합니다.

다음 updateMany() 작업은 tags 배열에 "home" 또는 "school"과 일치하는 요소가 하나 이상 있는 경우 exclude 필드를 false로 설정합니다.

db.inventory.updateMany(
{ tags: { $in: [ "home", "school" ] } },
{ $set: { exclude: false } }
)

출력 예시:

{
item: 'Pens',
quantity: 350,
tags: [ 'school', 'office' ],
exclude: false
},
{
item: 'Erasers',
quantity: 15,
tags: [ 'school', 'home' ],
exclude: false
},
{
item: 'Books',
quantity: 5,
tags: [ 'school', 'storage', 'home' ],
exclude: false
}

배열 쿼리에 대한 추가 예시는 다음을 참조하세요:

쿼리의 추가적인 예시는 다음을 참조하세요:

연산자는 형식의 정규 표현식을 사용하여 일치하는 값을 지정할 $in/pattern/ 있습니다.$in 내에서는 연산자 표현식을 $regex사용할 수 없습니다

다음 예를 고려하십시오.

db.inventory.find( { tags: { $in: [ /^be/, /^st/ ] } } )

이 쿼리는 tags 필드에 be 또는 st로 시작하는 문자열이나 be 또는 st로 시작하는 요소가 하나 이상 있는 배열이 있는 inventory collection 의 모든 문서를 선택합니다.

다음도 참조하세요.

← gte
$lt →