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

Como indexar valores numéricos para pesquisa facetda

Você pode usar o tipo numberFacet do MongoDB Search para indexar valores numéricos usando o representation especificado para facet. Você pode indexar números de tipos BSON int32, int64 e double.

O MongoDB Search suporta apenas queries de operadores de faceta em campos indexados como o tipo numberFacet . Para executar uma pesquisa normal também no mesmo campo, você também deve indexar o campo como tipo number.

Para faceta campos de string em documentos incorporados, você deve indexar os campos pai como o tipo de documento. Quando você faceta um campo de string dentro de documentos incorporados, o MongoDB Search retorna a contagem de faceta apenas para o número de documentos pai correspondentes.

O MongoDB Search não indexa dinamicamente valores number para facetamento. Você deve usar mapeamentos estáticos para indexar valores number para facet. Você pode utilizar o Editor Visual ou o Editor JSON na UI do Atlas para indexar campos number como o tipo number.

Aplicam-se as seguintes limitações:

  • Não é possível indexar decimal128 para faceta.

  • Não é possível indexar valores numéricos em arrays ou em um documento contido em uma array para facetmento.

  • Não é possível facetar campos numéricos indexados como parte de um campo embeddedDocuments .

Para definir o índice para o tipo numberFacet , escolha seu método de configuração preferido na UI do Atlas e então selecione o banco de dados e 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 a ser indexado no menu suspenso Field Name.

    Observação

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

  5. Clique no menu suspenso Data Type e selecione NumberFacet.

  6. Configure as propriedades do campo para o tipo numberFacet. Para saber mais, consulte Propriedades do campo.

  7. Clique em Add.

O seguinte é a sintaxe JSON para o tipo numberFacet. Substitua a definição de índice padrão pelo seguinte. Para saber mais sobre os campos, consulte Propriedades do Campo.

{
"mappings": {
"dynamic": true|false,
"fields": {
"<field-name>": {
"type": "numberFacet",
"representation": "int64|double",
"indexIntegers": true|false,
"indexDoubles": true|false
}
}
}
}

O tipo MongoDB Search numberFacet usa os seguintes parâmetros:

Opção
Tipo
necessidade
Descrição
Default

type

string

Obrigatório

O tipo de campo. O valor deve ser numberFacet.

representation

string

Opcional

O tipo de dados do campo a indexar. Os valores podem ser um dos seguintes tipos de BSON :

  • int64 - para indexar inteiros grandes sem perda de precisão e para arredondar valores double para inteiros. Não é possível usar esse tipo para indexar valores double grandes.

  • double - para indexar valores double grandes sem arredondamento.

Para saber mais, consulte exemplo abaixo.

double

indexIntegers

booleano

Opcional

Indica se deve indexar ou omitir a indexação de valores do tipo int32 e int64 . O valor pode ser true ou false. Ou isso ou indexDoubles deve ser true.

true

indexDoubles

booleano

Opcional

Indica se indexar ou omitir valores de tipo de indexação double . O valor pode ser true ou false. Isto ou indexIntegers deve ser true.

true

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 definição de índice de exemplo a seguir indexa o campo year como o tipo MongoDB Search numberFacet para oferecer suporte a queries nesse campo usando a faceta MongoDB Search.

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

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

  3. Aceite os valores padrão para o NumberFacet Properties.

  4. Clique em Add.

Substitua a definição de índice padrão pela seguinte definição de índice.

{
"mappings": {
"dynamic": false,
"fields": {
"year": {
"type": "numberFacet"
}
}
}
}

O exemplo de definição de índice a seguir indexa o campo year como os tipos numberFacet e number para retornar os seguintes tipos de resultados para suas queries:

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

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

  3. Aceite os valores padrão para o NumberFacet Properties.

  4. Clique em Add.

  5. Repita a etapa 1 e selecione Number no menu suspenso Data Type.

  6. Aceite os valores padrão para o Number Properties.

  7. Clique em Add.

Substitua a definição de índice padrão pela seguinte definição de índice.

{
"mappings": {
"dynamic": false,
"fields": {
"year": [
{
"type": "numberFacet"
},
{
"type": "number"
}
]
}
}
}

Para aprender mais sobre o coletor facet e ver exemplos de queries, consulte Exemplos.

Para saber como criar um índice com uma definição de faceta e consultar esse índice usando o coletor facet, consulte o tutorial Como usar facets com o MongoDB Search.

Voltar

número

Nesta página