정의
구문
wildcard 의 구문은 다음과 같습니다:
{ $search: { "index": <index name>, // optional, defaults to "default" "wildcard": { "query": "<search-string>", "path": "<field-to-search>", "allowAnalyzedField": <boolean>, "score": <options> } } }
옵션
wildcard 는 다음 용어를 사용하여 쿼리를 구성합니다:
필드 | 유형 | 설명 | 필요성 | 기본값 |
|---|---|---|---|---|
| 문자열 또는 문자열 배열 | 검색할 문자열 또는 문자열을 입력합니다. | 네 | |
| 문자열 또는 문자열 배열 | 인덱싱된 필드 또는 검색할 필드. 검색할 와일드카드 경로를 지정할 수도 있습니다. | 네 | |
| 부울 | 토큰화 분석기로 인덱스된 필드에 대해 쿼리를 실행하는 경우 | no |
|
| 객체 | 일치하는 검색어 결과에 부여된 점수를 수정합니다. 옵션은 다음과 같습니다.
쿼리에서 | no |
행동
wildcard 텀 수준 연산자이므로 query 필드는 분석되지 않습니다. allowAnalyzedField 를 true(으)로 설정하여 토큰화 분석기로 인덱싱된 필드에 wildcard 연산자를 사용합니다. 키워드 분석기 로 인덱싱된 필드는 이미 필드 값을 단일 터멀으로 간주하므로 allowAnalyzedField: true 은 필요하지 않습니다.
wildcard 을 allowAnalyzedField: true과 함께 사용하는 경우 MongoDB Search는 해당 필드에 지정된 분석기 또는 사용자 지정 분석기를 기반으로 문자 필터와 토큰 필터를 적용합니다. MongoDB Search는 토큰화를 건너뛰며 출력은 항상 단일 토큰입니다.
다음 예시는 분석된 필드에서 검색을 수행할 때 wildcard 연산자가 어떻게 작동하는지 보여줍니다.
예시
표준 분석기
표준 분석기 foo bar baz 로 필드 인덱싱한다고 가정해 보겠습니다. MongoDB Search는 필드 foo, bar, baz로 분석하고 인덱싱합니다. 와일드카드 연산자 foo bar* 를 끝에 와일드카드가 있는 단일 검색 텀 처리하기 때문에 이 필드 에서 foo bar* 를 검색하면 아무것도 찾을 수 없습니다. 즉, MongoDB Search는 foo bar 로 시작하는 모든 텀 를 필드 검색하지만 텀 없기 때문에 아무것도 찾지 못합니다.
예시
이스케이프 문자 동작
mongosh 또는 드라이버와 함께 이스케이프 문자를 사용하는 경우 이스케이프할 문자 앞에 이중 백슬래시를 사용해야 합니다.
예시
집계 파이프라인에서 리터럴 별표가 포함된 문자열을 검색하는 와일드카드 표현식을 만들려면 다음 표현식을 사용하세요.
"*\\**"
첫 번째 별표와 마지막 별표는 모든 문자와 일치하는 와일드카드 역할을 하며 \\* 는 리터럴 별표와 일치합니다.
참고
리터럴 백슬래시를 이스케이프하려면 다음 표현식을 사용합니다.
"*\\\*"
예시
다음 예시에서는 키워드 분석기를 사용하는 사용자 지정 인덱스 정의와 함께 sample_mflix 데이터베이스의 movies 컬렉션을 사용합니다. 클러스터에 샘플 데이터 세트가 있는 경우 movies 컬렉션에 MongoDB Search 인덱스를 생성하고 클러스터에서 예시 쿼리를 실행할 수 있습니다.
인덱스 예시
다음 인덱스 정의는 키워드 분석기를사용하여 movies 컬렉션의 title 필드를 인덱싱합니다.
1 { 2 "mappings": { 3 "fields": { 4 "title": { 5 "analyzer": "lucene.keyword", 6 "type": "string" 7 } 8 } 9 } 10 }
쿼리 예시
다음은 title 필드에서 Green D로 시작하고 그 뒤로 다른 문자 여러 개가 이어지는 영화 제목을 모두 검색하는 예시입니다.
다음 예에서는 문자열 title(여기서 Wom?n은(는) 단일 문자일 수 있음)로 시작하고 그 뒤에 공백 한 칸이 있고, 뒤이어 다른 문자 여러 개가 이어지는 영화 제목을 모든 ? 필드에서 검색합니다.
다음 예제에서는 이스케이프 문자를 사용하여 title 필드가 물음표로 끝나는 문서를 검색합니다.
query 필드의 * 문자는 모든 문자와 일치하며, \\? 문자열은 리터럴 물음표와 일치합니다.