필터
필터 클래스는 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
: 의 표현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)))