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

Como indexar os elementos de uma array

Para indexar matrizes, o MongoDB 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 os mapeamentos dinâmicos, o MongoDB Search indexará automaticamente os elementos de tipos de dados indexáveis dinamicamente dentro da array. Para saber mais sobre os tipos de dados que o MongoDB Search indexa dinamicamente, consulte Tipos de campo do MongoDB Search.

Você pode utilizar o Editor Visual ou o Editor JSON na UI do Atlas para definir o índice para elementos em arrays.

O MongoDB 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 MongoDB Search nivela as arrays anteriores semelhante à 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.

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

mapeamentos de campo

Nesta página