쿼리 지정
개요
이 가이드 에서는 스칼라 운전자 사용하여 쿼리 지정하는 방법을 학습 수 있습니다.
쿼리 필터하다 만들어 쿼리 반환하는 문서 설정하다 를 구체화할 수 있습니다. 쿼리 필터하다 는 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
도우미 메서드를 정의합니다.
쿼리 연산자 | 헬퍼 메서드 | 설명 |
---|---|---|
|
| Matches documents in which the value of the given field is greater than
the specified value. |
|
| Matches documents in which the value of the given field is less than or
equal to the specified value. |
|
| 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
도우미 메서드에 대해 설명합니다.
쿼리 연산자 | 헬퍼 메서드 | 설명 |
---|---|---|
|
| Matches documents that satisfy the conditions of all clauses |
|
| Matches documents that satisfy the conditions of one clause |
|
| Matches documents that do not satisfy the conditions of any clause |
|
| 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
도우미 메서드에 대해 설명합니다.
쿼리 연산자 | 헬퍼 메서드 | 설명 |
---|---|---|
|
| Matches documents that have arrays containing all elements in the query |
|
| Matches documents if an element in their array field satisfies all
conditions in the query |
|
| 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
도우미 메서드에 대해 설명합니다.
쿼리 연산자 | 헬퍼 메서드 | 설명 |
---|---|---|
|
| Matches documents that have the specified field |
|
| 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
도우미 메서드에 대해 설명합니다.
쿼리 연산자 | 헬퍼 메서드 | 설명 |
---|---|---|
|
| Performs a text search on documents |
|
| Matches documents that have values satisfying a specified
regular expression |
|
| 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 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.