Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Java 동기화 드라이버
/ /

쿼리 텍스트

이 가이드 에서는 MongoDB Java 운전자 에서 텍스트 쿼리 실행 방법을 학습 수 있습니다.

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

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

  • 용어로 텍스트 쿼리

  • 문구로 텍스트 쿼리하기

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

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

다음 섹션에서는 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"] }

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

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

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

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

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

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

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

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

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

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

대소문자 구분 검색을 지정하려면 다음 코드 스니펫을 사용합니다.

TextSearchOptions options = new TextSearchOptions().caseSensitive(true);
Bson filter = Filters.text("SomeText", options);

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

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

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

Bson filter = Filters.text("fast");
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

다음은 앞에 설명한 코드의 출력입니다.

{ "_id": 1, "title": "2 Fast 2 Furious ", "tags": ["undercover", "drug dealer"] }
{ "_id": 2, "title": "Fast 5", "tags": ["bank robbery", "full team"] }

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

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

Bson filter = Filters.text("fate 7");
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

다음은 앞에 설명한 코드의 출력입니다.

{ "_id": 3, "title": "Furious 7", "tags": ["emotional"] }
{ "_id": 4, "title": "The Fate of the Furious", "tags": ["betrayal"] }

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

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

Bson filter = Filters.text("\"fate of the furious\"");
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

다음은 앞에 설명한 코드의 출력입니다.

{ "_id": 4, "title": "The Fate of the Furious", "tags": ["betrayal"] }

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

검색에서 반환된 문서에는 텍스트 인덱스 필드에서 제외된 용어가 포함되어 있지 않습니다.

중요

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

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

Bson filter = Filters.text("furious -fast");
collection.find(filter).forEach(doc -> System.out.println(doc.toJson()));

다음은 앞에 설명한 코드의 출력입니다.

{ "_id": 3, "title": "Furious 7", "tags": ["emotional"] }
{ "_id": 4, "title": "The Fate of the Furious", "tags": ["betrayal"] }

돌아가기

지리공간적 검색

이 페이지의 내용