Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/ / / /

Como indexar os elementos de uma array

Nesta página

  • Como o Atlas Search indexa os elementos de array?
  • Como posso indexar objetos em arrays?
  • Revise as limitações
  • Definir o índice para os elementos da array
  • Experimente um exemplo de indexação de elementos de array

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

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

Para fazer query em campos dentro de um array de documentos ou objetos, você deve usar o tipo EmbeddedDocuments para indexar o campo que contém o array de objetos.

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:

  • dateFacet

  • Faceta numérica

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.

  1. Clique em Refine Your Index para configurar seu índice.

  2. Na seção Field Mappings, clique em Add Field Mapping para abrir a janela Add Field Mapping.

  3. Clique em Customized Configuration.

  4. Selecione o campo da array do tipo a ser indexada no menu suspenso Field Name .

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

  6. Clique em Add.

A seguir está a sintaxe JSON 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}

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.

  1. Na janela Add Field Mapping, selecione genres no menu suspenso Field Name.

  2. Clique no menu suspenso Data Type e selecione String.

  3. Mantenha as configurações padrão para o String Properties.

  4. 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}

Voltar

2: Definir mapeamentos de campo