Docs Menu
Docs Home
/ / /
Scala
/

쿼리 지정

이 페이지의 내용

  • 개요
  • 샘플 데이터
  • 정확히 일치
  • 비교 연산자
  • 로직 연산
  • 배열 연산자
  • 요소 연산자
  • 평가 연산자
  • 추가 정보
  • API 문서

이 가이드 에서는 스칼라 운전자 사용하여 쿼리 지정하는 방법을 학습 수 있습니다.

쿼리 필터하다 만들어 쿼리 반환하는 문서 설정하다 를 구체화할 수 있습니다. 쿼리 필터하다 는 MongoDB 읽기 또는 쓰기 (write) 작업에서 문서를 일치시키는 데 사용하는 검색 기준을 지정하는 표현식 입니다.

쿼리 연산자를 사용하여 쿼리 필터하다 에서 더 복잡한 일치 기준을 표현할 수 있습니다. 스칼라 운전자 에는 Filters 쿼리 연산자를 적용하기 위한 헬퍼 메서드를 제공하는 클래스가 포함되어 있습니다.

헬퍼 메서드의 전체 목록을 보려면 Filters 필터 API 문서를 참조하세요.

이 가이드 의 예제에서는 과일을 나타내는 문서가 포함된 fruits 컬렉션 에서 작업을 실행 합니다. 다음 코드 예시 에서는 데이터베이스 와 컬렉션 을 만든 다음 컬렉션 에 샘플 문서를 삽입하는 방법을 보여 줍니다.

val uri: String = "<connection string>"
val client: MongoClient = MongoClient(uri)
val database: MongoDatabase = client.getDatabase("db")
val collection: MongoCollection[Document] = database.getCollection("fruits")
// Inserts documents representing fruits
val fruits: Seq[Document] = Seq(
Document("_id" -> 1, "name" -> "apples", "qty" -> 5, "rating" -> 3, "color" -> "red", "type" -> Seq("fuji", "honeycrisp")),
Document("_id" -> 2, "name" -> "bananas", "qty" -> 7, "rating" -> 4, "color" -> "yellow", "type" -> Seq("cavendish")),
Document("_id" -> 3, "name" -> "oranges", "qty" -> 6, "rating" -> 2, "type" -> Seq("naval", "mandarin")),
Document("_id" -> 4, "name" -> "pineapples", "qty" -> 3, "rating" -> 5, "color" -> "yellow")
)
val result = collection.insertMany(fruits)
.subscribe((result: InsertManyResult) => println(result))

리터럴 값 쿼리는 쿼리 필터하다 와 정확히 일치하는 문서를 반환합니다.

다음 예시 에서는 쿼리 필터하다 를 find() 메서드에 대한 매개 변수로 지정합니다. 이 코드는 color 필드 값이 "yellow" 인 모든 문서를 반환합니다.

val filter = equal("color", "yellow")
collection.find(filter).subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": 2, "name": "bananas", "qty": 7, "rating": 4, "color": "yellow", "type": ["cavendish"]}
{"_id": 4, "name": "pineapples", "qty": 3, "rating": 5, "color": "yellow"}

참고

모든 문서 찾기

컬렉션 의 모든 문서를 찾으려면 매개변수를 전달하지 않고 find() 메서드를 호출합니다.

collection.find()

비교 연산자는 쿼리 필터하다 에 지정된 값을 기준으로 문서 필드 값을 평가합니다. 다음 목록은 일반적인 비교 연산자와 해당 연산자에 해당하는 Filters 도우미 메서드를 정의합니다.

쿼리 연산자
헬퍼 메서드
설명

$gt

gt()

Matches documents in which the value of the given field is greater than the specified value.

$lte

lte()

Matches documents in which the value of the given field is less than or equal to the specified value.

$ne

ne()

Matches documents in which the value of the given field does not equal the specified value.

비교 연산자의 전체 목록을 보려면 MongoDB Server 매뉴얼의 비교 쿼리 연산자 가이드를 참조하세요.

다음 예시 쿼리 필터하다 find() 메서드에 전달하고 gt() 메서드를 사용하여 $gt 비교 연산자 적용 . 이 코드는 rating 필드 값이 2보다 큰 모든 문서를 반환합니다.

val filter = gt("rating", 2)
collection.find(filter).subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": 1, "name": "apples", "qty": 5, "rating": 3, "color": "red", "type": ["fuji", "honeycrisp"]}
{"_id": 2, "name": "bananas", "qty": 7, "rating": 4, "color": "yellow", "type": ["cavendish"]}
{"_id": 4, "name": "pineapples", "qty": 3, "rating": 5, "color": "yellow"}

논리 연산자는 두 개 이상의 표현식 집합의 결과에 적용된 논리를 사용하여 문서를 일치시킵니다. 다음 표에서는 각 논리 연산자 와 해당 Filters 도우미 메서드에 대해 설명합니다.

쿼리 연산자
헬퍼 메서드
설명

$and

and()

Matches documents that satisfy the conditions of all clauses

$or

or()

Matches documents that satisfy the conditions of one clause

$nor

nor()

Matches documents that do not satisfy the conditions of any clause

$not

not()

Matches documents that do not match the expression

논리 연산자에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 논리 쿼리 연산자 가이드를 참조하세요.

다음 예시 쿼리 필터하다 메서드에 전달하고 메서드를 find() 사용하여 or() $or 논리 연산자 적용 . 이 코드는 qty 필드 값이 보다 크거나 5 color 필드 값이 인 모든 문서를 반환합니다."yellow"

val filter = or(gt("qty", 5), equal("color", "yellow"))
collection.find(filter).subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": 2, "name": "bananas", "qty": 7, "rating": 4, "color": "yellow", "type": ["cavendish"]}
{"_id": 3, "name": "oranges", "qty": 6, "rating": 2, "type": ["naval", "mandarin"]}
{"_id": 4, "name": "pineapples", "qty": 3, "rating": 5, "color": "yellow"}

배열 연산자는 배열 필드 에 있는 요소의 값 또는 수량을 기준으로 문서를 일치시킵니다. 다음 표에서는 각 배열 연산자 와 해당 Filters 도우미 메서드에 대해 설명합니다.

쿼리 연산자
헬퍼 메서드
설명

$all

all()

Matches documents that have arrays containing all elements in the query

$elemMatch

elemMatch()

Matches documents if an element in their array field satisfies all conditions in the query

$size

size()

Matches documents that have arrays of a specified size

배열 연산자에 대해 자세히 알아보려면 매뉴얼의 배열 쿼리 연산자 가이드를 MongoDB Server 참조하세요.

다음 예시 쿼리 필터하다 find() 메서드에 전달하고 size() 메서드를 사용하여 $size 배열 연산자 적용 . 이 코드는 type 배열 필드 에 2 요소가 포함된 모든 문서를 반환합니다.

val filter = size("type", 2)
collection.find(filter).subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": 1, "name": "apples", "qty": 5, "rating": 3, "color": "red", "type": ["fuji", "honeycrisp"]}
{"_id": 3, "name": "oranges", "qty": 6, "rating": 2, "type": ["naval", "mandarin"]}

요소 연산자는 필드 의 존재 여부 또는 유형에 따라 데이터를 쿼리 . 다음 표에서는 각 요소 연산자 와 해당 Filters 도우미 메서드에 대해 설명합니다.

쿼리 연산자
헬퍼 메서드
설명

$exists

exists()

Matches documents that have the specified field

$type

type()

Matches documents if a field has the specified type

요소 연산자에 대해 자세히 알아보려면 매뉴얼의 요소 쿼리 연산자 가이드를 MongoDB Server 참조하세요.

다음 예시 쿼리 필터하다 find() 메서드에 전달하고 exists() 메서드를 사용하여 $exists 요소 연산자 적용 . 이 코드는 color 필드 있는 모든 문서를 반환합니다.

val filter = exists("color")
collection.find(filter).subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": 1, "name": "apples", "qty": 5, "rating": 3, "color": "red", "type": ["fuji", "honeycrisp"]}
{"_id": 2, "name": "bananas", "qty": 7, "rating": 4, "color": "yellow", "type": ["cavendish"]}
{"_id": 4, "name": "pineapples", "qty": 3, "rating": 5, "color": "yellow"}

평가 연산자는 개별 필드 또는 전체 컬렉션 문서의 평가를 기반으로 데이터를 반환합니다. 다음 표에서는 일반적인 요소 연산자와 해당 Filters 도우미 메서드에 대해 설명합니다.

쿼리 연산자
헬퍼 메서드
설명

$text

text()

Performs a text search on documents

$regex

regex()

Matches documents that have values satisfying a specified regular expression

$mod

mod()

Performs a modulo operation on the value of a field and matches documents with a specified result

평가 연산자의 전체 목록을 보려면 MongoDB Server 매뉴얼의 평가 쿼리 연산자 가이드를 참조하세요.

다음 예시 쿼리 필터하다 find() 메서드에 전달하고 regex() 메서드를 사용하여 $regex 평가 연산자 적용 . 이 코드는 정규 표현식 사용하여 name 필드 값에 연속된 'p' 문자가 두 개 이상 있는 모든 문서를 반환합니다.

val filter = regex("name", "p{2,}")
collection.find(filter).subscribe((doc: Document) => println(doc.toJson()),
(e: Throwable) => println(s"There was an error: $e"))
{"_id": 1, "name": "apples", "qty": 5, "rating": 3, "color": "red", "type": ["fuji", "honeycrisp"]}
{"_id": 4, "name": "pineapples", "qty": 3, "rating": 5, "color": "yellow"}

문서 쿼리에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 문서 쿼리 가이드를 참조하세요.

스칼라 운전자 사용하여 문서를 검색하는 방법에 대해 자세히 학습 데이터 검색 가이드 참조하세요.

이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.

  • find()

  • 필터

  • insertMany()

돌아가기

Retrieve Data