Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Menu Docs
Página inicial do 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 é um operador de nível de termo, o que significa que o campo query não é analisado. Os operadores de nível de termo funcionam bem com o Analisador de palavras-chave, porque o campo query é tratado como um único termo, com caracteres especiais incluídos. Para obter um exemplo de consulta em relação a um campo query analisado, consulte o exemplo de campo analisado.

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

Set to true if you run your query against a field indexed with a tokenizing analyzer. This avoids the field's analyzer from splitting the indexed value into many terms. Fields indexed with the Keyword Analyzer don't require this option.

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

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:

"*\\\*"

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.

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.

Voltar

Pesquisa vetorial

Nesta página