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

Defina mapeamentos de campo

Nesta página

  • Mapeamentos estáticos e dinâmicos
  • Mapeamentos estáticos
  • Mapeamentos dinâmicos
  • Tipos de dados
  • Limitações
  • Campo de índice como vários tipos de dados
  • Exemplos
  • Exemplo de mapeamento estático
  • Exemplo de mapeamento combinado

Ao criar um índice de Atlas Search, você pode:

  • Especifique os campos para indexar utilizando mapeamentos estáticos.

  • Configure o Atlas Search para indexar automaticamente todos os tipos de campo suportados utilizando mapeamentos dinâmicos.

Para utilizar mapeamentos estáticos, você deve incluir explicitamente os campos na coleção que deseja indexar. No campo type, especifique o tipo de dados do campo na definição do campo. Alternativamente, você pode especificar uma array de definições de campo para um campo, um para cada tipo de dados.

Sintaxe
1{
2 "mappings": {
3 "dynamic": <boolean>,
4 "fields": {
5 "<field-name>": [
6 {
7 "type": "<field-type>",
8 ...
9 },
10 ...
11 ],
12 ...
13 }
14 }
15}

Você pode definir campos na definição do índice do Atlas Search em qualquer ordem.

Você pode utilizar mapeamentos estáticos e dinâmicos para especificar se a Pesquisa Atlas deve indexar automaticamente todos os campos dinamicamente indexáveis em sua coleta.

Use mapeamentos estáticos para configurar opções de índice para campos que você não deseja indexados dinamicamente ou para configurar um único campo independentemente de outros em um índice.

Para mapeamentos estáticos, configure mappings.dynamic para false e especifique os campos para indexar utilizando mappings.fields. O Atlas Search indexa somente os campos especificados com opções específicas. Se um campo indexado contiver dados polimórficos, a Atlas Search indexará apenas os documentos que correspondem aos mapeamentos especificados na definição de índice para esse campo e ignorará os documentos que contêm valores que não são o tipo de dados especificado na definição de índice para esse campo.

Você não pode usar a notação de ponto para indexar estaticamente campos aninhados. Ao definir o índice para um campo aninhado, você deve definir os mapeamentos para cada campo pai daquele campo aninhado. Para obter um exemplo, consulte os Exemplos nesta página, que demonstram a sintaxe de índice para um campo chamado city que está aninhado dentro de um campo chamado address.

Use mapeamentos dinâmicos se seu esquema mudar regularmente ou for desconhecido, ou ao experimentar o Atlas Search. Você pode configurar um índice inteiro para utilizar mapeamentos dinâmicos ou especificar campos individuais, como campos do tipo document, para serem mapeados dinamicamente. Antes de usar mapeamentos dinâmicos, consulte a tabela de Tipos de dados.

Para mapeamentos dinâmicos, defina mappings.dynamic como true. O Atlas Search indexa automaticamente os campos dos tipos suportados em cada documento. Para campos do tipo string, o Atlas Search armazena os campos em mongot.

Observação

Os índices mapeados dinamicamente ocupam mais espaço em disco do que os índices mapeados estaticamente e podem ter menos desempenho.

O Atlas Search não suporta os seguintes tipos de dados BSON:

  • Decimal128

  • JavaScript code with scope

  • Tecla máxima

  • Min key

  • Expressão regular

  • Timestamp

A tabela a seguir enumera os tipos de dados BSON compatíveis e os tipos de campo do Atlas Search que você pode usar para indexar os tipos de dados BSON. A tabela também indica se o tipo de campo Atlas Search é incluído automaticamente em um índice Atlas Search quando você habilita mapeamentos dinâmicos e lista os operadores e coletores que você pode usar para fazer query no valor do campo.

Observação

Quando você indexa dinamicamente um campo que tem dados polimórficos, o Atlas Search indexa automaticamente o campo como todos os tipos de campo dinamicamente indexáveis que correspondem aos dados. Se o campo contiver dados de um tipo que o Atlas Search não indexa automaticamente, o Atlas Search não indexará estes dados.

Tipo de JSON
Tipo de campo do Atlas Search
Dinamicamente Indexado
operadores e coletores

Operadores que são compatíveis com o tipo de dados na array.

Boolean

Data

Data

Double

Double

Double

knnVector (obsoleto)

Inteiro de bits

Inteiro de bits

Inteiro de 64 bits

Inteiro de 64 bits

Zero

N/A

Objeto

Todos os operadores

Objeto

embeddedDocument (para array de objetos)

ObjectId

String

String

String

String

Algumas limitações se aplicam. Para saber mais, consulte Como indexar os elementos de uma array.

Para o tipo string, os operadores moreLikeThis e queryString não aceitam uma array de strings.

O Atlas Search não inclui um tipo de campo para indexar valores nulos porque o Atlas Search indexa automaticamente valores nulos para campos indexados estática e dinamicamente.

Observação

Você pode armazenar campos de todos os tipos de dados suportados no Atlas Search usando a opção storedSource.

Por padrão, o Atlas Search para de replicar alterações para índices maiores que 2.1 bilhões de objetos de índice, em um conjunto de réplicas ou shard único, onde cada documento indexado ou embeddedDocument aninhado conta como um único objeto. Isso significa que seu índice pode ser consultado, mas você pode obter resultados obsoletos.

Se você planeja indexar campos que podem exceder 2.1 bilhões de objetos, use numPartitions ou fragmente seu cluster.

Importante

A numPartitions opção está disponível como um recurso de visualização.

Você não pode indexar campos que contêm o sinal de dólar ($) no início do nome do campo.

Para indexar um campo como vários tipos, defina os tipos na array de definição de campo para campo.

Exemplo

O exemplo a seguir mostra a definição de campo para indexar um campo como tipos múltiplos.

1{
2 ...
3 "mappings": {
4 "dynamic": <boolean>,
5 "fields": {
6 "<field-name>": [
7 {
8 "type": "<field-type>",
9 ...
10 },
11 {
12 "type": "<field-type>",
13 ...
14 },
15 ...
16 ],
17 ...
18 },
19 ...
20 }
21}

O seguinte exemplo de definição de índice utiliza mapeamentos estáticos.

  • O analisador de índice padrão é lucene.standard.

  • O analisador de pesquisa padrão é lucene.standard. Você pode alterar o analisador de pesquisa se quiser que o termo de query seja analisado de forma diferente de como ele é armazenado no índice de Atlas Search.

  • O índice especifica mapeamentos de campo estáticos (dynamic: false), o que significa que campos que não são explicitamente mencionados não são indexados. Então, a definição do índice inclui:

    • O campo address, que é do tipo document. Possui dois subcampos incorporados, city e state.

      O subcampo city usa o analisador lucene.simple por padrão para queries. Utiliza a opção ignoreAbove para ignorar qualquer cadeia de mais de 255 bytes de comprimento.

      O subcampo state usa o analisador lucene.english por padrão para queries.

    • O campo company, que é do tipo string. Ele usa o analisador lucene.whitespace por padrão para queries. Tem um analisador multi denominado mySecondaryAnalyzer que utiliza o analisador lucene.french por padrão para queries.

      Para saber mais sobre analisadores do multi, consulte Construção de Caminho.

    • O campo employees, que é uma array de strings. Ele utiliza o analisador lucene.standard por padrão para queries. Para indexar arrays, o Atlas Search exige somente o tipo de dados dos elementos de array. Você não precisa especificar que os dados estão contidos em uma matriz na definição de índice.

{
"analyzer": "lucene.standard",
"searchAnalyzer": "lucene.standard",
"mappings": {
"dynamic": false,
"fields": {
"address": {
"type": "document",
"fields": {
"city": {
"type": "string",
"analyzer": "lucene.simple",
"ignoreAbove": 255
},
"state": {
"type": "string",
"analyzer": "lucene.english"
}
}
},
"company": {
"type": "string",
"analyzer": "lucene.whitespace",
"multi": {
"mySecondaryAnalyzer": {
"type": "string",
"analyzer": "lucene.french"
}
}
},
"employees": {
"type": "string",
"analyzer": "lucene.standard"
}
}
}
}

O exemplo de definição de índice a seguir utiliza mapeamentos estáticos e dinâmicos.

  • O analisador de índice padrão é lucene.standard.

  • O analisador de pesquisa padrão é lucene.standard. Você pode alterar o analisador de pesquisa se quiser que o termo de query seja analisado de forma diferente de como ele é armazenado no índice de Atlas Search.

  • O índice especifica mapeamentos de campo estáticos (dynamic: false), o que significa que campos que não são explicitamente mencionados não são indexados. Então, a definição do índice inclui:

    • O campo company, que é do tipo string. Ele usa o analisador lucene.whitespace por padrão para queries. Tem um analisador multi denominado mySecondaryAnalyzer que utiliza o analisador lucene.french por padrão para queries. Para saber mais sobre analisadores do multi, consulte Construção de Caminho.

    • O campo employees, que é um conjunto de cadeias de caracteres. Ele usa o analisador lucene.standard por padrão para consultas.

    • O campo address, que é do tipo document. Possui dois subcampos incorporados, city e state. Em vez de mencionar explicitamente cada campo aninhado no documento, a definição de índice permite o mapeamento dinâmico para todos os subcampos no documento. Ele usa o analisador lucene.standard por padrão para queries.

{
"analyzer": "lucene.standard",
"searchAnalyzer": "lucene.standard",
"mappings": {
"dynamic": false,
"fields": {
"company": {
"type": "string",
"analyzer": "lucene.whitespace",
"multi": {
"mySecondaryAnalyzer": {
"type": "string",
"analyzer": "lucene.french"
}
}
},
"employees": {
"type": "string",
"analyzer": "lucene.standard"
},
"address": {
"type": "document",
"dynamic": true
}
}
}
}

Voltar

Filtros de token