Este tutorial demonstra como executar consultas específicas de strings em campos não-string, convertendo-os em strings e armazenando-os em uma visualização materializada. A visualização materializada permite que você use operadores específicos de string para query os campos convertidos e manter os dados originais intactos na coleção de origem.
Este tutorial orienta você pelas seguintes etapas:
Antes de começar, certifique-se de que seu cluster atenda aos requisitos descritos nos pré-requisitos.
Criar uma visualização materializada
This section demonstrates how to create a materialized view named airbnb-mat-view on the sample_airbnb.listingsAndReviews collection. This view stores various numeric and date fields from the source collection as string fields.
Criar índices de pesquisa MongoDB na visualização materializada
To run the queries in the Run Queries on the Converted Fields stage of this tutorial, you need to create MongoDB Search indexes on the converted string fields in your airbnb_mat_view materialized view.
The following JSON definitions define MongoDB Search indexes on the airbnb_mat_view materialized view. You can use dynamic or static mappings to specify which fields you want to index in your collection, depending on the type of queries you want to run. To learn more about field mappings or MongoDB Search index syntax, see Define Field Mappings for a MongoDB Search Index or Index Reference, respectively.
A seguinte definição de índice JSON MongoDB Search utiliza mapeamentos dinâmicos para indexar os campos na visualização materializada. Você pode usar esse índice para executar queries usando o operador queryString.
Você não pode executar queries usando o operador autocomplete em campos indexados dinamicamente.
{ "mappings": { "dynamic": true } }
A seguinte definição de índice JSON MongoDB Search utiliza mapeamentos estáticos para indexar os campos na visualização materializada como o tipo autocomplete. Você pode usar esse índice para executar queries usando o operador de preenchimento automático.
Você não pode executar queries utilizando o operador queryString em 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 saber como criar os índices definidos acima usando sua interface preferida, consulte Clientes compatíveis.
Executar queries nos campos convertidos
Você pode executar queries nos campos numéricos e de data que foram convertidos em cadeias de caracteres. Este tutorial usa os operadores queryString e autocomplete para pesquisar propriedades. A query utiliza os seguintes estágios de pipeline:
$searchestágio para pesquisar a coleção.$limitstage to limit the output to5results$projectestágio a ser excluído_id
Nesta seção, você se conecta ao seu cluster e executa as queries de amostra usando o operador nos campos da collection airbnb_mat_view.
Observação
Você não pode executar queries próximas ou de intervalo em relação aos campos de data e número que foram convertidos em cadeias de caracteres em sua exibição materializada.
Query with queryString
The following procedure runs queryString queries against the converted fields. Use the index that you created with dynamic mappings.
Query with autocomplete
The following procedure runs autocomplete queries against the converted fields. Use the index that you created with static mappings.