Definição
wildcardO operador
wildcardhabilita queries que utilizam caracteres especiais na string de pesquisa que podem corresponder a qualquer caractere.PersonagemDescrição?Corresponde a qualquer caractere único.
*Corresponde a 0 ou mais caracteres.
\Personagem de fuga.
wildcardé um operador de nível de termo, o que significa que o campoquerynão é analisado. Os operadores de nível de termo funcionam bem com o Analisador de palavras-chave, porque o campoqueryé tratado como um único termo, com caracteres especiais incluídos. Para obter um exemplo de consulta em relação a um campoqueryanalisado, consulte o exemplo de campo analisado.
Sintaxe
wildcard tem a seguinte sintaxe:
{ $search: { "index": <index name>, // optional, defaults to "default" "wildcard": { "query": "<search-string>", "path": "<field-to-search>", "allowAnalyzedField": <boolean>, "score": <options> } } }
Opções
wildcard usa os seguintes termos para construir uma consulta:
Campo | Tipo | Descrição | necessidade | Default |
|---|---|---|---|---|
| cadeia de caracteres ou matriz de cadeias de caracteres | String ou strings para pesquisar. | sim | |
| cadeia de caracteres ou matriz de cadeias de caracteres | Campos indexados a serem pesquisados. Você também pode especificar um caminho curinga para pesquisar. | sim | |
| booleano | Set to | no |
|
| objeto | Modifique a score atribuída aos resultados dos procurar correspondentes. As opções são:
Para obter informações sobre como utilizar o | no |
Comportamento
wildcard is a term-level operator, meaning that the query field isn't analyzed. Use the wildcard operator on fields indexed with tokenizing analyzers by setting allowAnalyzedField to true. Fields indexed with the Keyword Analyzer already treat the field value as a single term, so allowAnalyzedField: true isn't required.
If you use wildcard with allowAnalyzedField: true, MongoDB Search applies character filters and token filters based on the specified analyzer or custom analyzer for the field. MongoDB Search skips the tokenization and the output is always a single token.
Os exemplos a seguir mostram como o operador wildcard se comporta ao realizar uma pesquisa em campos analisados:
Exemplo
Analisador padrão
Suponha que um campo foo bar baz seja indexado com o analisador padrão. A Pesquisa do MongoDB analisa e indexa o campo como foo, bar e baz. A pesquisa de foo bar* nesse campo não encontra nada, porque o operador curinga trata foo bar* como um único termo de pesquisa com um curinga no final. Em outras palavras, o MongoDB Search pesquisa no campo qualquer termo que comece com foo bar, mas não encontra nada, porque não existe nenhum termo .
Exemplo
Analisador de palavras-chave
Pesquisar por *Star Trek* em um campo indexado com o analisador de palavras-chave encontra todos os documentos nos quais o campo contém a string Star Trek em qualquer contexto. A pesquisa de *Star
Trek* em um campo indexado com o analisador padrão não encontra nada, pois há um espaço entre Star e Trek, e o índice não contém espaços.
Comportamento de Caractere de Escape
Ao usar o caractere de escape em mongosh ou com um driver, é necessário usar uma barra invertida dupla antes do caractere a ser escapado.
Exemplo
Para criar uma expressão curinga que procure qualquer string que contenha um asterisco literal em um aggregation pipeline, use a seguinte expressão:
"*\\**"
O primeiro e o último asteriscos funcionam como curingas que correspondem a qualquer caractere, e o \\* corresponde a um asterisco literal.
Observação
Use a seguinte expressão para escapar de uma barra invertida literal:
"*\\\*"
Exemplos
The following examples use the movies collection in the sample_mflix database with a custom index definition that uses the keyword analyzer. If you have the sample dataset on your cluster, you can create a MongoDB Search index on the movies collection and run the example queries on your cluster.
Exemplo de índice
A seguinte definição de índice indexa o campo title na coleção movies com o analisador de palavra-chave:
1 { 2 "mappings": { 3 "fields": { 4 "title": { 5 "analyzer": "lucene.keyword", 6 "type": "string" 7 } 8 } 9 } 10 }
Exemplos de consulta
O exemplo a seguir procurar em todos os campos title os títulos de filmes que começam com Green D, seguidos de qualquer número de outros caracteres.
O exemplo a seguir pesquisa todos os campos title em busca de títulos de filmes que começam com a string Wom?n (onde ? pode ser qualquer caractere único), seguido por um espaço e, em seguida, qualquer número de caracteres adicionais.
O exemplo a seguir pesquisa usando o caractere de escape para documentos nos quais o campo title termina com um ponto de interrogação.
O caractere * no campo query corresponde a quaisquer caracteres, e a string \\? corresponde a um ponto de interrogação literal.