The Filters class provides static factory methods for the MongoDB query operators. Each method returns an instance of the Bson
type, which can in turn be passed to any method that expects a query filter.
다음 코드와 같이 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
: 의 표현GeoJSON
Point
MultiPoint
: 의 표현GeoJSON
MultiPoint
LineString
: 의 표현GeoJSON
LineString
MultiLineString
: 의 표현GeoJSON
MultiLineString
Polygon
: 의 표현GeoJSON
Polygon
MultiPolygon
: 의 표현GeoJSON
MultiPolygon
GeometryCollection
: 의 표현GeoJSON
GeometryCollection
예시
다음 예시 에서는 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)))