Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

Cómo indexar valores numéricos para la búsqueda facetada

Se puede usar el tipo numberFacet de MongoDB Search para indexar valores numéricos utilizando el representation especificado para la búsqueda por facetas. Se pueden indexar números de los tipos BSON int32, int64 y double.

MongoDB Search solo admite consultas con operadores de facetas en campos indexados como tipo dateFacet. Para realizar una búsqueda normal en el mismo campo,number también debe indexarlo como tipo.

Para realizar facetado en campos de string en documentos insertados, es necesario indexar los campos principales como tipo documento. Cuando se realiza un facetado en un campo de string dentro de documentos incrustados, MongoDB Search devuelve el recuento de facetas solo para el número de documentos principales que coinciden.

MongoDB Search no indexa dinámicamente los valores de number para la creación de facetas. Debes usar mapeos estáticos para indexar los valores number para las facetas. Puedes utilizar el Editor visual o el Editor JSON en la interfaz de usuario de Atlas para indexar number campos como el tipo number.

Se aplican las siguientes limitaciones:

  • No puedes indexar decimal128 para crear facetas.

  • No puedes indexar valores numéricos en arreglos ni en un documento contenido en un arreglo para el facetado.

  • No puedes aplicar facetas sobre campos numéricos indexados como parte de un campo embeddedDocuments.

Para definir el índice para el tipo dateFacet, elija su método de configuración preferido en la interfaz de usuario de Atlas y, a continuación, seleccione la base de datos y la colección.

  1. Se debe hacer clic en Refine Your Index para configurar el índice.

  2. En la sección Field Mappings, haz clic en Add Field Mapping para abrir la ventana Add Field Mapping.

  3. Haga clic en Customized Configuration.

  4. Selecciona el campo para indicar desde el desplegable Field Name.

    Nota

    No puedes indexar campos que contengan el signo de dólar ($) al inicio del nombre del campo.

  5. Haz clic en el desplegable Data Type y selecciona NumberFacet.

  6. Configure las propiedades del campo para el tipo dateFacet. Para obtener más información, consulte Propiedades del campo.

  7. Haga clic en Add.

A continuación se muestra la sintaxis JSON para el tipo dateFacet. Reemplace la definición de índice predeterminada con la siguiente. Para obtener más información sobre los campos, consulte Propiedades de campo.

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

El tipo numberFacet de búsqueda de MongoDB toma los siguientes parámetros:

Opción
Tipo
Necesidad
Descripción
predeterminado

type

string

Requerido

El tipo de campo. El valor debe ser numberFacet.

representation

string

Opcional

El tipo de dato del campo a indexar. Los valores pueden ser uno de los siguientes tipos de BSON:

  • int64 - para indexación de enteros grandes sin pérdida de precisión y para redondear valores double a enteros. No puedes usar este tipo para indexar valores dobles grandes.

  • double - para indexar valores double grandes sin redondear.

Para obtener más información, consulte el ejemplo a continuación.

double

indexIntegers

booleano

Opcional

Indica si indexar u omitir la indexación de los valores int32 y int64 . El valor puede ser true o false. O esto o indexDoubles debe ser true.

true

indexDoubles

booleano

Opcional

Indica si se debe indexar u omitir la indexación de valores tipo double. El valor puede ser true o false. O esto o indexIntegers debe ser true.

true

El siguiente ejemplo de definición de índice utiliza la colección sample_mflix.movies. Si ya tienes los datos de muestra cargados en tu clúster, puedes utilizar el Editor Visual o el Editor JSON en la Interfaz de Usuario de Atlas para configurar el índice. Después de seleccionar tu método de configuración preferido, selecciona la base de datos y la colección, y ajusta tu índice para agregar mapeos de campos.

La siguiente definición de índice de ejemplo indexa el campo year como tipo numberFacet de MongoDB Search para dar soporte a queries en ese campo utilizando la faceta de MongoDB Search.

  1. En la ventana Add Field Mapping, selecciona year del menú desplegable Field Name.

  2. Haz clic en el desplegable Data Type y selecciona NumberFacet.

  3. Acepta los valores por defecto para NumberFacet Properties.

  4. Haga clic en Add.

Reemplazar la definición predeterminada del índice con la siguiente definición del índice.

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

El siguiente ejemplo de definición de índice indexa el campo year como tipos numberFacet y number para devolver los siguientes tipos de resultados para tus queries:

  1. En la ventana Add Field Mapping, selecciona year del menú desplegable Field Name.

  2. Haz clic en el desplegable Data Type y selecciona NumberFacet.

  3. Acepta los valores por defecto para NumberFacet Properties.

  4. Haga clic en Add.

  5. Repite el paso 1 y selecciona Number del menú desplegable Data Type.

  6. Acepta los valores por defecto para Number Properties.

  7. Haga clic en Add.

Reemplazar la definición predeterminada del índice con la siguiente definición del índice.

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

Para aprender más sobre el colector facet y ver queries de ejemplo, consulte Ejemplos.

Para aprender a crear un índice con una definición de faceta y consultar ese índice utilizando el recopilador facet, consulta el tutorial Cómo utilizar las facetas con MongoDB Search.