Docs Menu
Docs Home
/ / /
Scala
/

필터

이 페이지의 내용

  • 비교
  • 예시
  • 논리
  • 예시
  • 배열
  • 예시
  • 요소
  • 예시
  • 평가
  • 예시
  • 비트 단위
  • 예시
  • 지리 공간
  • 예시

필터 클래스는 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: 점 근처에 있는 지리 공간적 객체를 반환합니다. 지리 공간적 인덱스 가 필요합니다. 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)))

돌아가기

빌더