문서 홈 → 애플리케이션 개발 → MongoDB 매뉴얼
$in
이 페이지의 내용
$in
$in
연산자는 필드 값이 지정된 배열의 값과 같은 문서를 선택합니다.
호환성
다음 환경에서 호스팅되는 배포에 $in
사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
$in
표현식을 지정하려면 다음 프로토타입을 사용합니다.
{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }
다양한 BSON types 값을 비교하려면 지정된 BSON 비교순서를 참조하십시오.
field
에 배열이 있는 경우 $in
연산자는 field
가 지정된 배열의 값과 일치하는 요소를 하나 이상 포함하는 배열을 가진 문서를 선택합니다(예: <value1>
, <value2>
등).
$in
연산자는 각 매개 변수를 컬렉션의 각 문서와 비교하므로 성능 문제가 발생할 수 있습니다. 성능을 개선하려면 다음을 수행합니다.
- 에 전달되는 매개 변수의 수를 제한하는 것이 좋습니다.
$in
연산자를 수십 개의 값으로 변환합니다. 매개변수를 수백 개 이상 사용하면 쿼리 성능에 부정적인 영향을 미칠 수 있습니다.
쿼리하려는
field
에 인덱스를 만듭니다.
참고
이 문서에서는 $in
쿼리 연산자에 대해 설명합니다. $in
애그리게이션 연산자에 대해서는 $in(애그리게이션)을 참조하세요.
Atlas Search을 사용하여 Atlas에서 데이터 쿼리하기
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" ] } ] )
$in
연산자를 사용하여 값 일치
다음 예를 고려하십시오.
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
때는 연산자 대신 연산자를 사용합니다.
$in
연산자를 사용하여 배열의 값 일치시키기
다음 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
연산자 사용
연산자는 형식의 정규 표현식을 사용하여 일치하는 값을 지정할 $in
수 /pattern/
있습니다.$in
내에서는 연산자 표현식을 $regex
사용할 수 없습니다
다음 예를 고려하십시오.
db.inventory.find( { tags: { $in: [ /^be/, /^st/ ] } } )
이 쿼리는 tags
필드에 be
또는 st
로 시작하는 문자열이나 be
또는 st
로 시작하는 요소가 하나 이상 있는 배열이 있는 inventory
collection 의 모든 문서를 선택합니다.