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

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

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:

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. Selecione o campo da array do tipo a ser indexada no menu suspenso Field Name .

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

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

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

Próximo

autocompletar