$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
에 인덱스를 만듭니다.
Atlas Search을 사용하여 Atlas에서 데이터 쿼리하기
MongoDB Atlas에 저장된 데이터의 경우, $search
쿼리를 실행할 때 Atlas Search in 연산자를 사용할 수 있습니다. $search
후에 $in
을(를) 실행하는 것은 in 연산자를 사용하여 $search
을(를) 실행하는 것보다 성능이 떨어집니다.
이 연산자의 Atlas Search 버전에 대해 자세히 알아보려면 아틀라스 문서에서 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
연산자를 사용하여 이 쿼리를 작성할 수 있지만 동일한 필드에 대해 동등성 검사를 수행할 때는 $or
연산자 대신 $in
연산자를 사용합니다.
연산자를 사용하여 배열의 값 일치시키기 $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 의 모든 문서를 선택합니다.