Como indexar os elementos de uma array
Nesta página
Para indexar matrizes, o Atlas Search requer apenas o tipo de dados dos elementos da matriz . Você não precisa especificar que os dados estão contidos em uma array ([]
) na definição de índice.
Se você habilitar mapeamentos dinâmicos, o Atlas Search indexará automaticamente elementos de tipos de dados indexáveis dinamicamente dentro da matriz. Para saber mais sobre os tipos de dados que a Atlas Search indexa dinamicamente, consulte Tipos de dados.
Você pode utilizar o Editor Visual ou o Editor JSON na UI do Atlas para definir o índice para elementos em arrays.
Como o Atlas Search indexa os elementos de array?
O Atlas Search indexa os tipos de dados suportados dentro de uma matriz nivelando os campos durante a indexação.
Exemplo
Considere os seguintes documentos:
doc1 = { a: {b: [[<value1>, <value2>], <value3>] }} doc2 = { a: {b: [<value1>, <value2>, <value3>] } } doc3 = { a: [{ b: <value1>}, {b: <value2>}, {b: <value3>}] }
O Atlas Search nivela as arrays anteriores semelhante ao seguinte durante a indexação:
LuceneDoc<n> = {"a.b":[<value1>,<value2>,<value3>]}
Como posso indexar objetos em arrays?
Para fazer query de campos dentro de uma array de documentos ou objetos, você deve usar o tipo embeddedDocuments para indexar o campo que contém a array de objetos.
Revise as limitações
O Atlas Search não indexa os seguintes tipos de campo do Atlas Search se o tipo de campo estiver contido em uma array ou estiver em um documento contido em uma array:
Definir o índice para os elementos da array
Para definir o índice para os elementos de array, escolha seu método de configuração preferido na UI do Atlas e então selecione o banco de dados e a collection.
Clique em Refine Your Index para configurar seu índice.
Na seção Field Mappings, clique em Add Field Mapping para abrir a janela Add Field Mapping.
Selecione o campo da array do tipo a ser indexada no menu suspenso Field Name .
Clique no menu suspenso Data Type e selecione o tipo de dados do elemento de matriz que você deseja indexar. Para saber mais sobre a configuração das propriedades do tipo selecionado, consulte a documentação do tipo selecionado.
Clique em Add.
O seguinte é a sintaxeJSON do para indexar elementos dentro de uma array. Substitua a definição de índice padrão pelo seguinte.
1 { 2 "mappings": { 3 "dynamic": true|false, 4 "fields": { 5 "<array-field-name>": { 6 "type": "<array-element-data-type>" 7 } 8 } 9 } 10 }
Experimente um exemplo de indexação de elementos de array
O exemplo de definição de índice abaixo usa a coleção sample_mflix.movies. Se você já tiver os dados de amostra carregados em seu cluster, poderá usar o Visual Editor ou o Editor JSON na UI do Atlas para configurar o índice. Após selecionar seu método de configuração preferido, selecione o banco de dados e a coleção e filtre seu índice para adicionar mapeamentos de campo.
A seguinte definição de índice indexa o campo genres
, que contém uma array de valores de string.
Na janela Add Field Mapping, selecione genres no menu suspenso Field Name.
Clique no menu suspenso Data Type e selecione String.
Mantenha as configurações padrão para o String Properties.
Clique em Add.
Substitua a definição de índice padrão pela seguinte definição de índice.
1 { 2 "mappings": { 3 "fields": { 4 "genres": { 5 "type": "string" 6 } 7 } 8 } 9 }