Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Scala드라이버
/

필터 빌더 클래스

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: 점 근처에 있는 지리 공간적 객체를 반환합니다. 지리 공간적 인덱스 가 필요합니다. 2dsphere2d 인덱스 지원 $near 을(를) 지원합니다.

  • nearSphere: 구의 점 에 근접한 지리 공간적 객체를 반환합니다. 지리 공간적 인덱스 가 필요합니다. 2dsphere2d 인덱스 지원 $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)))

돌아가기

빌더

이 페이지의 내용