$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에 저장된 데이터의 경우, $search 쿼리를 실행할 때 Atlas Search in 연산자를 사용할 수 있습니다. $search 후에 $in을 실행하는 것은 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" ] } ] )
Match Values
이 쿼리 inventory 컬렉션 에서 quantity 필드 값이 5 또는 15인 문서를 선택합니다.
db.inventory.find( { quantity: { $in: [ 5, 15 ] } }, { _id: 0 } )
출력은 다음과 같습니다.
{ item: 'Erasers', quantity: 15, tags: [ 'school', 'home' ] }, { item: 'Books', quantity: 5, tags: [ 'school', 'storage', 'home' ] }
연산자 사용하여 쿼리 쓰기 (write) 수 있지만 동일한 필드 에 대해 $or 동등성 검사를 수행할 $in $or 때는 연산자 대신 연산자 사용합니다.
배열의 값 일치
다음 작업은 배열 또는 와 일치하는 요소가 하나 이상 updateMany() exclude 있는 경우 필드 로 false tags "home" "school"설정합니다.
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/ 내에서는 표현식을 $regex 사용할 수 $in 없습니다.
이 쿼리 inventory 컬렉션 에서 tags 필드 be 또는 st로 시작하는 문서를 선택합니다.
db.inventory.find( { tags: { $in: [ /^be/, /^st/ ] } } )
쿼리 tags 필드 be 또는 st 로 시작하는 문자열 또는 be 또는 st로 시작하는 요소가 하나 이상 포함된 배열 있는 inventory 컬렉션 에서 모든 문서를 선택합니다.