Docs Menu
Docs Home
/ /

쿼리 텍스트

이 가이드 에서는 MongoDB 코틀린 (Kotlin) 운전자 에서 텍스트 쿼리 실행 방법을 학습 수 있습니다.

텍스트 쿼리 사용하여 지정된 필드에 또는 구문 이 포함된 문서를 조회 수 있습니다. 텀 공백 문자를 제외한 일련의 문자입니다. 구는 임의의 수의 공백 문자가 있는 일련의 용어입니다.

다음 섹션에서는 다음 유형의 텍스트 쿼리를 수행하는 방법을 설명합니다.

  • 용어로 텍스트 쿼리

  • 문구로 텍스트 쿼리하기

  • 용어가 제외된 쿼리 텍스트

텍스트 쿼리 결과를 정렬하려면 결과 정렬 가이드 의 텍스트 쿼리 섹션을 참조하세요.

다음 섹션에서는 fast_and_furious_movies 컬렉션 에 대한 텍스트 쿼리의 예를 기능 . 각 섹션은 collection 라는 변수를 사용하여 fast_and_furious_movies 컬렉션 의 MongoCollection 인스턴스 를 참조합니다.

fast_and_furious_movies 컬렉션에는 분노의 질주(Fast and Furious) 영화 프랜차이즈의 일부인 여러 영화 중 하나를 설명하는 문서가 포함되어 있습니다. 각 문서에는 제목 필드와 태그 필드가 있습니다.

{ "_id": 1, "title": "2 Fast 2 Furious ", "tags": ["undercover", "drug dealer"] }
{ "_id": 2, "title": "Fast 5", "tags": ["bank robbery", "full team"] }
{ "_id": 3, "title": "Furious 7", "tags": ["emotional"] }
{ "_id": 4, "title": "The Fate of the Furious", "tags": ["betrayal"] }

이 데이터는 다음 Kotlin 데이터 클래스로 모델링됩니다.

data class Movies(
@BsonId val id: Int,
val title: String,
val tags: List<String>
)

텍스트 쿼리 실행 전에 텍스트 인덱스 만들어야 합니다. 텍스트 인덱스 텍스트 쿼리 실행 문자열 또는 문자열 배열 필드 지정합니다.

다음 예제에서는 컬렉션 의 필드 에 대해 텍스트 쿼리를 실행 title fast_and_furious_movies. 필드 에서 텍스트 쿼리를 활성화 하려면 title 인덱스 빌더를 사용하여 다음 스니펫으로 텍스트 인덱스 생성합니다.

collection.createIndex(Indexes.text("title"))

자세한 내용은 다음 리소스를 참조하세요.

  • 인덱스 가이드의 텍스트 인덱스 섹션

  • 텍스트 인덱스 서버 수동 입력

Filters.text() 메서드를 사용하여 텍스트 쿼리 지정합니다.

Filters.text() 메서드는 필터 빌더 를 사용하여 텍스트 쿼리 중에 검색 할 내용을 지정하는 쿼리 필터를 정의합니다. 쿼리 필터하다 는 BSON 인스턴스 로 표시됩니다. 쿼리 필터 find() 메서드에 전달하여 텍스트 쿼리 실행.

find() 메서드를 실행하면 MongoDB 컬렉션 의 텍스트 인덱스 로 인덱싱된 모든 필드에 대해 텍스트 쿼리 실행합니다. MongoDB 하나 이상의 쿼리 텀과 각 결과에 대한 관련성 점수가 포함된 문서를 반환합니다. 관련성 점수에 대한 자세한 내용은 결과 정렬 가이드의 텍스트 쿼리 섹션을 참조하세요.

Filters.text() 메서드의 두 번째 매개 변수로 TextSearchOptions 를 포함하여 대소문자 구분과 같은 텍스트 쿼리 옵션을 지정할 수 있습니다. 기본값 으로 텍스트 쿼리는 대소문자 구분 없이 실행 쿼리 가 소문자와 대문자 값을 모두 일치시킵니다.

대소문자를 구분하는 쿼리 지정하려면 다음 스니펫을 사용하세요.

val options: TextSearchOptions = TextSearchOptions().caseSensitive(true)
val filter = Filters.text("SomeText", options)

이 섹션에 언급된 메서드 및 클래스에 대한 자세한 내용은 다음 API 문서를 참조하세요.

Filters.text() 메서드에 문자열로 전달하여 텍스트 쿼리 에 텀 지정합니다.

다음 예시 fast_and_furious_movies 컬렉션 의 문서에서 "fast"라는 텀 포함된 제목에 대한 텍스트 쿼리 실행합니다.

val filter = Filters.text("fast")
val findFlow = collection.find(filter)
findFlow.collect { println(it) }
Movies(id=1, title=2 Fast 2 Furious, tags=[undercover, drug dealer])
Movies(id=2, title=Fast 5, tags=[bank robbery, full team])

텍스트 쿼리 에서 여러 용어를 일치시키려면 Filters.text() 빌더 메서드에서 각 텀 공백으로 구분합니다. 빌더 메서드는 텍스트 쿼리 Bson 인스턴스 로 반환합니다. 이를 find() 메서드에 전달하면 용어와 일치하는 문서가 반환됩니다.

다음 예시 fast_and_furious_movies 컬렉션 의 문서에서 "fate" 또는 "7" 라는 용어가 포함된 제목에 대한 텍스트 쿼리 실행합니다.

val filter = Filters.text("fate 7")
val findFlow = collection.find(filter)
findFlow.collect { println(it) }
Movies(id=3, title=Furious 7, tags=[emotional])
Movies(id=4, title=The Fate of the Furious, tags=[betrayal])

이스케이프 따옴표가 포함된 구문Filters.text() 메서드에 전달하여 텍스트 쿼리에 사용할 구문을 지정합니다. 이스케이프 따옴표는 큰따옴표 앞에 백슬래시 문자가 오는 문자입니다. 구문 주위에 이스케이프 따옴표를 추가하지 않으면 find() 메서드는 텀 검색을 실행합니다.

다음 예시 fast_and_furious_movies 컬렉션 의 문서에서 "fate of the furious"라는 구문이 포함된 제목에 대한 텍스트 쿼리 실행합니다.

val filter = Filters.text("\"fate of the furious\"")
val findFlow = collection.find(filter)
findFlow.collect { println(it) }
Movies(id=4, title=The Fate of the Furious, tags=[betrayal])

텍스트 쿼리 에서 제외하려는 각 텀 에 대해 Filters.text() 빌더 메서드에 전달한 문자열에서 텀 앞에 빼기 기호를 붙입니다.

쿼리 에서 반환된 문서 중 텍스트 인덱스 필드 에 제외된 텀 포함되어 있지 않습니다.

중요

쿼리 에서 용어를 제외하려면 텍스트 쿼리 텀 하나 이상 있어야 합니다.

다음 예시 fast_and_furious_movies 컬렉션 의 문서에서 "furious" 텀 포함하지만 "fast" 텀 포함하지 않는 제목에 대한 텍스트 쿼리 실행합니다.

val filter = Filters.text("furious -fast")
val findFlow = collection.find(filter)
findFlow.collect { println(it) }
Movies(id=3, title=Furious 7, tags=[emotional])
Movies(id=4, title=The Fate of the Furious, tags=[betrayal])

돌아가기

지리공간적 검색

이 페이지의 내용