Este tutorial demuestra cómo ejecutar consultas específicas de cadenas en campos que no son cadenas, convirtiendo los campos a cadenas y almacenándolos en un vista materializada. La vista materializada permite usar operadores específicos de cadena para consultar los campos convertidos y mantener los datos originales intactos en la colección de origen.
Este tutorial sigue estos pasos:
Antes de comenzar, asegúrese de que su clúster cumpla con los requisitos descritos en los prerrequisitos.
Crear una vista materializada
En esta sección se muestra cómo crear una vista materializada llamada airbnb-mat-view en la sample_airbnb.listingsAndReviews colección. Esta vista almacena varios campos numéricos y de fecha de la colección de origen como campos de string.
Crea índices de búsqueda de MongoDB en la vista materializada
Para ejecutar las queries en la Ejecutar queries en los campos convertidos etapa de este tutorial, debe crear índices de MongoDB Search en los campos de string convertidos en su vista materializada airbnb_mat_view.
Las siguientes definiciones de JSON definen índices de búsqueda de MongoDB Search en la airbnb_mat_view vista materializada. Puede utilizar asignaciones dinámicas o estáticas para especificar qué campos desea índice en su colección, según el tipo de query que desee ejecutar. Para aprender más información sobre las asignaciones de campo o la sintaxis del índice de MongoDB Search, consulte Definir asignaciones de campo para un índice de MongoDB Search o Referencia de índice, respectivamente.
La siguiente definición de índice de búsqueda JSON MongoDB Search utiliza mapeos dinámicos para indexar los campos en la vista materializada. Puedes utilizar este índice para ejecutar consultas usando el operador queryString.
No puedes ejecutar consultas usando el operador de autocompletado en campos indexados dinámicamente.
{ "mappings": { "dynamic": true } }
La siguiente definición de índice JSON MongoDB Search utiliza mapeos estáticos para indexar los campos en la vista materializada como el tipo de autocompletado. Puedes usar este índice para ejecutar consultas utilizando el operador de autocompletado.
No puedes ejecutar consultas utilizando el operador queryString en campos indexados como tipo autocomplete.
{ "mappings": { "dynamic": false, "fields": { "accommodatesNumber": [ { "dynamic": true, "type": "document" }, { "minGrams": 1, "type": "autocomplete" } ], "lastScrapedDate": [ { "dynamic": true, "type": "document" }, { "type": "autocomplete" } ], "maximumNumberOfNights": [ { "dynamic": true, "type": "document" }, { "minGrams": 1, "type": "autocomplete" } ] } } }
Para aprender cómo crear los índices definidos anteriormente usando tu interfaz preferida, consulta Clientes compatibles.
Ejecutar consultas en los campos convertidos
Se pueden ejecutar consultas sobre los campos numéricos y de fecha que se convirtieron en cadenas. Este tutorial utiliza los operadores queryString y autocompletar para buscar propiedades. La consulta utiliza las siguientes etapas de la pipeline:
$searchescenario para buscar en la colección$limitfase para limitar la salida a5resultados$projectetapa que se debe excluir_id
En esta sección, te conectas a tu clúster y ejecutas las consultas de muestra utilizando el operador sobre los campos en la colección airbnb_mat_view.
Nota
No puedes realizar consultas cercanas o de rango en los campos de fecha y número que se convirtieron a cadenas en tu vista materializada.
Query con queryString
El siguiente procedimiento ejecuta query queryString en los campos convertidos. Utiliza el índice que creaste con asignaciones dinámicas.
Query con autocompletar
El siguiente procedimiento ejecuta query de autocompletar en los campos convertidos. Utilice el índice que creó con asignaciones estáticas.