Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Menu Docs
Página inicial do Docs
/ /

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

The following index definition example uses the sample_mflix.movies collection. If you have the sample data already loaded on your cluster, you can use the Visual Editor or JSON Editor in the Atlas UI to configure the index. After you select your preferred configuration method, select the database and collection, and refine your index to add field mappings.

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