Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Menu Docs

wildcard Operador

wildcard

O operador wildcard habilita queries que utilizam caracteres especiais na string de pesquisa que podem corresponder a qualquer caractere.

Personagem
Descrição

?

Corresponde a qualquer caractere único.

*

Corresponde a 0 ou mais caracteres.

\

Personagem de fuga.

wildcard is a term-level operator, meaning that the query field is not analyzed. Term-level operators work well with the Keyword Analyzer, because the query field is treated as a single term, with special characters included. For an example of querying against an analyzed query field, see the analyzed field example.

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>
}
}
}

wildcard usa os seguintes termos para construir uma consulta:

Campo
Tipo
Descrição
necessidade
Default

query

cadeia de caracteres ou matriz de cadeias de caracteres

String ou strings para pesquisar.

sim

path

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

allowAnalyzedField

booleano

Defina como true se você executar sua query em um campo indexado com um analisador de tokenização. Isso evita que o analisador do campo divida o valor indexado em muitos termos. Os campos indexados com o analisador de palavras-chave não exigem essa opção.

no

false

score

objeto

Modifique a score atribuída aos resultados dos procurar correspondentes. As opções são:

  • boost: multiplique a pontuação do resultado pelo número fornecido.

  • constant: substitui a pontuação do resultado pelo número fornecido.

  • function: substitua a pontuação do resultado usando a expressão fornecida.

Para obter informações sobre como utilizar o score em sua consulta, consulte Classificar os documentos nos resultados.

no

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

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

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.

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:

"*\\\*"

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.

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}

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.