필터 클래스는 MongoDB 쿼리 연산자에 대한 정적 팩토리 메서드를 제공합니다. 각 메서드는 Bson 유형의 인스턴스 반환하며, 이 인스턴스는 쿼리 필터하다 필요한 모든 메서드에 차례로 전달될 수 있습니다.
다음 코드와 같이 Filters 클래스의 메서드를 정적으로 가져올 수 있습니다.
import org.mongodb.scala.model.Filters._ 
이 가이드의 예제에서는 이러한 정적 가져오기를 가정합니다.
비교
비교 연산자 메서드에는 다음이 포함됩니다.
eq: 지정된 값과 동일한 값을 일치시킵니다.eq은 예약어이므로equal의 별칭은 입니다.gt: 지정된 값보다 큰 값을 일치시킵니다.gte: 지정된 값보다 크거나 같은 값을 일치시킵니다.lt: 지정된 값보다 작은 값을 일치시킵니다.lte: 지정된 값보다 작거나 같은 값을 일치시킵니다.ne: 지정된 값과 같지 않은 모든 값을 일치시킵니다.neq은 예약어이므로notEqual의 별칭은 입니다.in: 배열에 지정된 모든 값과 일치합니다.nin: 배열 에 지정된 값과 일치하지 않습니다.empty: 모든 문서와 일치합니다.
예시
다음 예시 에서는 qty 필드 값이 20 인 모든 문서를 선택하는 필터하다 를 만듭니다.
`eq`("qty", 20) equal("qty", 20) 
다음 예시 에서는 qty 필드 값이 5 또는 15 인 모든 문서를 선택하는 필터하다 를 만듭니다.
in("qty", 5, 15) 
다음 예시 에서는 필터하다 가 비어 있으므로 모든 문서를 선택하는 필터하다 를 만듭니다.
empty() 
논리
논리 연산자 메서드에는 다음이 포함됩니다.
and: 논리적AND으)로 필터를 결합하고 두 필터의 조건과 일치하는 모든 문서를 선택합니다.or: 논리적OR필터를 사용하여 필터를 결합하고 두 필터하다 중 하나의 조건과 일치하는 모든 문서를 선택합니다.not: 쿼리 표현식 의 효과를 반전시키고 필터하다 와 일치하지 않는 문서를 선택합니다.nor: 논리적NOR으)로 필터를 결합하고 두 필터와 일치하지 않는 모든 문서를 선택합니다.
예시
다음 예시 에서는 qty 필드 값이 20 보다 크고 user 필드 값이 "jdoe" 인 모든 문서를 선택하는 필터하다 를 만듭니다.
and(gt("qty", 20), equal("user", "jdoe")) 
쿼리 언어 는 필터하다 의 모든 요소를 암시적으로 함께 추가하므로 and() 메서드는 필요한 경우에만 $and 연산자 를 생성합니다. 앞의 예시 는 다음과 같이 렌더링됩니다.
{    "qty" : { "$gt" : 20 },    "user" : "jdoe" } 
다음 예시 에서는 price 필드 값이 0.99 또는 1.99 이고 sale 필드 값이 true 이거나 qty 필드 값이 보다 작은 모든 문서를 선택하는 필터하다 를 만듭니다. 20:
and(or(equal("price", 0.99), equal("price", 1.99)     or(equal("sale", true), lt("qty", 20))) 
이 쿼리 는 $or 연산자 를 두 번 이상 사용하기 때문에 암시적 $and 연산을 사용하여 구성할 수 없습니다. 이 쿼리 는 다음과 같이 렌더링됩니다.
{  "$and" :     [       { "$or" : [ { "price" : 0.99 }, { "price" : 1.99 } ] },       { "$or" : [ { "sale" : true }, { "qty" : { "$lt" : 20 } } ] }     ] } 
배열
배열 연산자 메서드에는 다음이 포함됩니다.
all: 쿼리 에 지정된 모든 요소를 포함하는 배열과 일치합니다.elemMatch: 배열 필드의 요소가 지정된$elemMatch조건과 모두 일치하는 경우 문서를 선택합니다.size: 배열 필드가 지정된 크기인 경우 문서를 선택합니다.
예시
다음 예시 에서는 "ssl" 및 "security" 를 모두 포함하는 tags 배열 이 있는 문서를 선택합니다.
all("tags", "ssl", "security") 
요소
요소 연산자 메서드에는 다음이 포함됩니다.
exists: 지정된 필드가 있는 문서를 선택합니다.type: 필드 가 지정된 유형인 경우 문서를 선택합니다.type은 예약어이므로bsonType의 별칭은 입니다.
예시
다음 예시 에서는 qty 필드 를 포함하고 이 필드 의 값이 5 또는 15 와 같지 않은 문서를 선택합니다.
and(exists("qty"), nin("qty", 5, 15)) 
평가
평가 연산자 메서드에는 다음이 포함됩니다.
mod: 필드 값에 모듈로 연산을 수행하고 지정된 결과를 가진 문서를 선택합니다.regex: 값이 지정된 정규 표현식 과 일치하는 문서를 선택합니다.text: 전체 텍스트 검색 표현식 과 일치하는 문서를 선택합니다.where: JavaScript 표현식 을 충족하는 문서를 일치시킵니다.
예시
다음 예시 에서는 abstract 필드 에 텍스트 인덱스 가 있는 컬렉션 이 있다고 가정합니다. "coffee" 텀 가 포함된 abstract 필드 가 있는 문서를 선택합니다.
text("coffee") 
텍스트 인덱스를 사용하면 대소문자를 구분하여 검색할 수 있습니다. 다음 예시 에서는 정확한 텀 "coffee" 을 포함하는 abstract 필드 가 있는 문서를 선택합니다.
text("coffee", TextSearchOptions().caseSensitive(true)) 
텍스트 인덱스를 사용하면 발음 부호 구분 검색이 가능합니다. 다음 예에서는 정확한 용어 "café" 을 포함하는 abstract 필드가 있는 문서를 선택합니다.
text("café", TextSearchOptions().diacriticSensitive(true)) 
비트 단위
비트 연산자 메서드에는 다음이 포함됩니다.
bitsAllSet: 필드 의 지정된 비트가 모두 설정하다 문서를 선택합니다.bitsAllClear: 필드 의 지정된 비트가 모두 비워진 문서를 선택합니다.bitsAnySet: 필드 의 지정된 비트 중 하나 이상이 설정하다 문서를 선택합니다.bitsAnyClear: 필드 의 지정된 비트 중 하나 이상이 비워진 문서를 선택합니다.
예시
이 예시 에서는 해당 비트 마스크 50 (00110010)의 위치에 비트 설정하다 bitField 필드 가 있는 문서를 선택합니다.
bitsAllSet("bitField", 50) 
지리 공간
지리 공간적 연산자 메서드에는 다음이 포함됩니다.
geoWithin: 값이 경계GeoJSON도형 내에 속하는GeoJSON도형인 필드 가 포함된 모든 문서를 선택합니다.geoWithinBox: 지정된 상자 내에 완전히 존재하는 그리드 좌표 데이터가 있는 필드 가 포함된 모든 문서를 선택합니다.geoWithinPolygon: 지정된 다각형 내에 완전히 존재하는 격자 좌표 데이터가 있는 필드 가 포함된 모든 문서를 선택합니다.geoWithinCenter: 지정된 원 내에 완전히 존재하는 격자 좌표 데이터가 있는 필드가 포함된 모든 문서를 선택합니다.geoWithinCenterSphere: 구형 도형을 사용하여 지정된 원 내에 완전히 존재하는 지리 공간적 데이터(GeoJSON또는 legacy coordinate pairs)가 있는 필드가 포함된 도형을 선택합니다.geoIntersects:GeoJSON지오메트리와 교차하는 지오메트리를 선택합니다.2dsphere인덱스 는$geoIntersects을(를) 지원합니다.near: 점 근처에 있는 지리 공간적 객체를 반환합니다. 지리 공간적 인덱스 가 필요합니다.2dsphere및2d인덱스 지원$near을(를) 지원합니다.nearSphere: 구의 점 에 근접한 지리 공간적 객체를 반환합니다. 지리 공간적 인덱스 가 필요합니다.2dsphere및2d인덱스 지원$nearSphere을(를) 지원합니다.
GeoJSON기반 필터를 더 쉽게 구성할 수 있도록 운전자 에는 전체 GeoJSON 클래스 계층 구조도 포함되어 있습니다.
Point: 의 표현GeoJSONPointMultiPoint: 의 표현GeoJSONMultiPointLineString: 의 표현GeoJSONLineStringMultiLineString: 의 표현GeoJSONMultiLineStringPolygon: 의 표현GeoJSONPolygonMultiPolygon: 의 표현GeoJSONMultiPolygonGeometryCollection: 의 표현GeoJSONGeometryCollection
예시
다음 예시 에서는 geo 필드 에 지정된 다각형 내에 속하는 GeoJSON Geometry 객체 가 포함된 모든 문서를 선택하는 필터하다 를 만듭니다.
val polygon: Polygon = Polygon(Seq(Position(0, 0), Position(4, 0),                                    Position(4, 4), Position(0, 4),                                    Position(0, 0))) geoWithin("geo", polygon) 
다음 예시 에서는 geo 필드 에 지정된 Point 과 교차하는 GeoJSON Geometry 객체 가 포함된 모든 문서를 선택하는 필터하다 를 만듭니다.
geoIntersects("geo", Point(Position(4, 0)))