개요
이 가이드 에서는 스칼라 운전자 사용하여 문서에서 텍스트 쿼리를 실행 방법을 학습 수 있습니다.
텍스트 쿼리 사용하여 지정된 필드 에 텀 또는 구문이 포함된 문서를 조회 수 있습니다. 텀 에는 공백이 아닌 문자만 포함됩니다. 구에는 임의의 수의 공백 문자로 구분된 용어가 포함됩니다.
참고
텍스트 쿼리에는 검색 하려는 컬렉션 필드에 대한 텍스트 인덱스 필요합니다. 인덱스를 만드는 방법을 학습 인덱스를 사용하여 쿼리 최적화 가이드 를 참조하세요.
샘플 데이터
이 가이드 의 예제에서는 movies Atlas 샘플 데이터 sample_mflix 세트의 데이터베이스 에 있는 컬렉션 사용합니다. 스칼라 애플리케이션 에서 이 컬렉션 액세스 하려면 MongoClient Atlas cluster 에 연결하는 를 만듭니다. 그런 다음 database 및 변수에 다음 값을 collection 할당합니다.
val database: MongoDatabase = mongoClient.getDatabase("sample_mflix") val collection: MongoCollection[Document] = database.getCollection("movies")
무료 MongoDB Atlas 클러스터 생성하고 샘플 데이터 세트를 로드하는 방법을 학습하려면 MongoDB 시작하기 가이드 를 참조하세요.
텍스트 인덱스 만들기
텍스트 쿼리 실행 전에 컬렉션 에 텍스트 인덱스 만들어야 합니다. 텍스트 인덱스 텍스트 검색 위해 인덱스 할 문자열 필드를 하나 이상 지정합니다. 다음 예시 movies 컬렉션 의 title 필드 에 텍스트 인덱스 생성합니다.
val observable = collection.createIndex(Indexes.text("title")) Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))
용어별 텍스트 쿼리
특정 텀 포함된 문서를 찾으려면 Filters 클래스의 text() 메서드에 해당 텀 문자열로 전달합니다.
다음 예시 title 필드 에 "time" 이라는 텀 있는 문서의 수를 계산합니다.
val filterTerm = text("time") collection.countDocuments(filterTerm) .subscribe((count: Long) => println(count))
146
여러 용어가 포함된 문서를 찾으려면 검색 문자열에서 용어를 공백으로 구분합니다. 다음 예시 title 필드 에 "time" 텀 또는 "machine" 텀 있는 문서의 수를 계산합니다.
val filterMultiple = text("time machine") collection.countDocuments(filterMultiple) .subscribe((count: Long) => println(count))
158
구문별 텍스트 쿼리
구문이 포함된 문서를 찾으려면 검색 문자열에서 구문을 이스케이프 따옴표(\")로 묶습니다.
다음 예시 title 필드 에 "time machine" 구문이 있는 문서의 수를 계산합니다.
val filterPhrase = text("\"time machine\"") collection.countDocuments(filterPhrase) .subscribe((count: Long) => println(count))
4
제외된 용어가 있는 쿼리 텍스트
특정 텀 포함된 문서를 제외하려면 검색 문자열에서 텀 앞에 하이픈(-)을 붙입니다. 쿼리 에 긍정적인 텀 하나 이상 포함해야 합니다.
다음 예시 "time" 텀 포함하지만 "machine" 텀 포함하지 않는 문서의 수를 계산합니다.
val filterExclude = text("time -machine") collection.countDocuments(filterExclude) .subscribe((count: Long) => println(count))
142
쿼리 텍스트 옵션 지정
TextSearchOptions 객체 두 번째 매개 변수로 Filters.text()에 전달하여 텍스트 쿼리 동작을 사용자 지정할 수 있습니다. 다음 표에서는 TextSearchOptions 인스턴스 에 연결할 수 있는 메서드에 대해 설명합니다.
메서드 | 설명 |
|---|---|
| 텍스트 쿼리 의 대소문자 구분 여부를 설정합니다. 기본값은 |
| 텍스트 쿼리 |
| 텍스트 쿼리 |
다음 예시 title 필드 에서 "Time" 텀 의 대소문자 구분 검색 과 일치하는 문서의 수를 계산합니다.
val options = TextSearchOptions().caseSensitive(true) val filterOptions = text("Time", options) collection.countDocuments(filterOptions) .subscribe((count: Long) => println(count))
146
추가 정보
텍스트 검색 에 대해 자세히 학습 MongoDB Server 매뉴얼에서 다음 리소스를 참조하세요.
스칼라 운전자 사용하여 인덱스를 만드는 방법에 대해 자세히 학습 인덱스를 사용하여 쿼리 최적화 가이드 를 참조하세요.
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.