AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

wildcard 연산자

wildcard

wildcard 연산자는 검색 문자열에 모든 문자와 일치할 수 있는 특수 문자를 사용하는 쿼리를 활성화합니다.

캐릭터
설명

?

모든 단일 문자와 일치합니다.

*

0개 이상의 문자와 일치합니다.

\

이스케이프 문자.

wildcard 는 텀 수준 연산자이므로 query 필드는 분석되지 않습니다. query 필드는 특수 문자가 포함된 단일 텀으로 취급되므로 텀 수준 연산자는 키워드 분석기와 잘 작동합니다. 분석된 query 필드에 대한 쿼리 예시는 분석된 필드 예시를 참조하세요.

wildcard 의 구문은 다음과 같습니다:

{
$search: {
"index": <index name>, // optional, defaults to "default"
"wildcard": {
"query": "<search-string>",
"path": "<field-to-search>",
"allowAnalyzedField": <boolean>,
"score": <options>
}
}
}

wildcard 는 다음 용어를 사용하여 쿼리를 구성합니다:

필드
유형
설명
필요성
기본값

query

문자열 또는 문자열 배열

검색할 문자열 또는 문자열을 입력합니다.

path

문자열 또는 문자열 배열

인덱싱된 필드 또는 검색할 필드. 검색할 와일드카드 경로를 지정할 수도 있습니다.

allowAnalyzedField

부울

토큰화 분석기로 인덱스된 필드에 대해 쿼리를 실행하는 경우 true 으로 설정합니다. 이렇게 하면 필드의 분석기가 인덱스된 값을 여러 터뮬으로 분할하는 것을 방지할 수 있습니다. 키워드 분석기 로 인덱스된 필드에는 이 옵션이 필요하지 않습니다.

no

false

score

객체

일치하는 검색어 결과에 부여된 점수를 수정합니다. 옵션은 다음과 같습니다.

  • boost결과 점수에 주어진 숫자를 곱합니다.

  • constant결과 점수를 주어진 숫자로 바꿉니다.

  • function: 주어진 표현식을 사용하여 결과 점수를 대체합니다.

쿼리에서 score 사용에 대한 자세한 내용은 결과에서 문서 채점하기를 참조하십시오.

no

wildcard 텀 수준 연산자이므로 query 필드는 분석되지 않습니다. allowAnalyzedFieldtrue(으)로 설정하여 토큰화 분석기로 인덱싱된 필드에 wildcard 연산자를 사용합니다. 키워드 분석기 로 인덱싱된 필드는 이미 필드 값을 단일 터멀으로 간주하므로 allowAnalyzedField: true 은 필요하지 않습니다.

wildcardallowAnalyzedField: true과 함께 사용하는 경우 MongoDB Search는 해당 필드에 지정된 분석기 또는 사용자 지정 분석기를 기반으로 문자 필터와 토큰 필터를 적용합니다. MongoDB Search는 토큰화를 건너뛰며 출력은 항상 단일 토큰입니다.

다음 예시는 분석된 필드에서 검색을 수행할 때 wildcard 연산자가 어떻게 작동하는지 보여줍니다.

예시

표준 분석기 foo bar baz 로 필드 인덱싱한다고 가정해 보겠습니다. MongoDB Search는 필드 foo, bar, baz로 분석하고 인덱싱합니다. 와일드카드 연산자 foo bar* 를 끝에 와일드카드가 있는 단일 검색 텀 처리하기 때문에 이 필드 에서 foo bar* 를 검색하면 아무것도 찾을 수 없습니다. 즉, MongoDB Search는 foo bar 로 시작하는 모든 텀 를 필드 검색하지만 텀 없기 때문에 아무것도 찾지 못합니다.

예시

키워드 분석기로 인덱싱된 필드에서 *Star Trek*을 검색하면 해당 필드에 어떤 컨텍스트에서든 Star Trek string이 포함된 모든 문서를 찾을 수 있습니다. 표준 분석기로 인덱싱된 필드에서 *Star Trek*을 검색하면 StarTrek 사이에 공백이 있고 인덱스에 공백이 포함되어 있지 않기 때문에 아무것도 찾을 수 없습니다.

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 필드의 * 문자는 모든 문자와 일치하며, \\? 문자열은 리터럴 물음표와 일치합니다.