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.
wildcardis a term-level operator, meaning that thequeryfield is not analyzed. Term-level operators work well with the Keyword Analyzer, because thequeryfield is treated as a single term, with special characters included. For an example of querying against an analyzedqueryfield, see the analyzed field example.
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 | Defina como | 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 é um operador de nível de termo, o que significa que o campo query não é analisado. Use o operador wildcard em campos indexados com analisadores de tokenização definindo allowAnalyzedField como true. Os campos indexados com o analisador de palavras-chave já tratam o valor do campo como um único termo, portanto, allowAnalyzedField: true não é necessário.
Se você usar wildcard com allowAnalyzedField: true, o MongoDB Search aplicará filtros de caracteres e filtros de token com base no analisador especificado ou no analisador personalizado para o campo. O MongoDB Search ignora a tokenização e a saída é sempre um único 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
Os exemplos a seguir usam a coleção movies no banco de dados sample_mflix com uma definição de índice personalizada que usa o analisador de palavras-chave. Se você tiver o dataset de amostra em seu cluster, poderá criar um índice de pesquisa do MongoDB na coleção movies e executar as consultas de exemplo em seu 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.