Definición
wildcardEl operador
wildcardpermite realizar queries que utilizan caracteres especiales en la string de búsqueda que pueden coincidir con cualquier carácter.CarácterDescripción?Coincide con cualquier carácter único.
*Coincide con 0 o más caracteres.
\Carácter de escape.
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.
Sintaxis
wildcard tiene la siguiente sintaxis:
{ $search: { "index": <index name>, // optional, defaults to "default" "wildcard": { "query": "<search-string>", "path": "<field-to-search>", "allowAnalyzedField": <boolean>, "score": <options> } } }
opciones
wildcard utiliza los siguientes términos para construir una query:
Campo | Tipo | Descripción | Necesidad | predeterminado |
|---|---|---|---|---|
| string o arreglo de strings | String o strings de búsqueda. | Sí | |
| string o arreglo de strings | Campo o campos indexados para buscar. También puedes especificar una ruta comodín para buscar. | Sí | |
| booleano | Configúralo en | no |
|
| Objeto | Modifique la puntuación asignada a los resultados de los términos de búsqueda coincidentes. Las opciones son:
Para obtener información sobre cómo usar | no |
Comportamiento
wildcard es un operador a nivel de término, lo que significa que el campo query no se analiza. Utiliza el operador wildcard en campos indexados con analizadores de tokenización configurando allowAnalyzedField en true. Los campos indexados con el Analizador de Palabras Clave ya tratan el valor del campo como un único término, por lo que allowAnalyzedField: true no es necesario.
Si utilizas wildcard con allowAnalyzedField: true, MongoDB Search aplica filtros de caracteres y filtros de tokens en función del analizador especificado o del analizador personalizado para el campo. MongoDB Search omite la tokenización y el resultado siempre es un solo token.
Los siguientes ejemplos muestran cómo se comporta el operador wildcard cuando se realiza una búsqueda en campos analizados:
Ejemplo
Analizador estándar
Supón que un campo foo bar baz está indexado con el analizador estándar. MongoDB Search analiza e indexa el campo como foo, bar y baz. Buscar foo bar* en este campo no arroja resultados, porque el operador wildcard trata foo bar* como un único término de búsqueda con un wildcard al final. En otras palabras, MongoDB Search busca en el campo cualquier término que comience con foo bar, pero no encuentra nada porque no existe ningún término.
Ejemplo
Analizador de palabras clave.
Buscar *Star Trek* en un campo indexado con el analizador de palabras clave encuentra todos los documentos en los que el campo contiene la string Star Trek en cualquier contexto. Buscar *Star Trek* en un campo indexado con el analizador estándar no arroja resultados porque hay un espacio entre Star y Trek, y el índice no contiene espacios.
Comportamiento de los caracteres de escape
Cuando uses el carácter de escape en mongosh o con un driver, debes utilizar una barra invertida double antes del carácter de escape.
Ejemplo
Para crear una expresión comodín que busque cualquier string que contenga un asterisco literal en una canalización de agregación, utilice la siguiente expresión:
"*\\**"
El primer y último asteriscos actúan como comodines que coinciden con cualquier carácter, y el \\* coincide con un asterisco literal.
Nota
Utiliza la siguiente expresión para escapar una barra invertida literal:
"*\\\*"
Ejemplos
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.
Ejemplo de índice
La siguiente definición de índice indexa el campo title en la colección movies con el Analizador de palabras clave:
1 { 2 "mappings": { 3 "fields": { 4 "title": { 5 "analyzer": "lucene.keyword", 6 "type": "string" 7 } 8 } 9 } 10 }
Ejemplos de query
The following example searches all title fields for movie titles that begin with Green D, followed by any number of other characters.
The following example searches all title fields for movie titles that begin with the string Wom?n (where ? may be any single character), followed by a space and then any number of additional characters.
The following example searches using the escape character for documents in which the title field ends with a question mark.
El carácter * en el campo query coincide con cualquier carácter, y la string \\? coincide con un signo de interrogación literal.