Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Definir asignaciones de campos para un índice de MongoDB Search

Cuando se crea un índice de MongoDB Search, se puede especificar qué campos indexar utilizando los siguientes métodos:

  • Mapeos dinámicos: permite que la búsqueda de MongoDB indexe automáticamente todos los campos según un conjunto de tipos de campo por defecto o configurado (typeSet).

  • Mapeos estáticos: Permiten especificar qué campos se deben indexar.

  • Por defecto, MongoDB Search deja de replicar cambios para índices superiores a 2,100,000,000 objetos de índice en un set de réplicas o una sola partición, donde cada documento indexado o embeddedDocument anidado cuenta como un solo objeto. Esto significa que el índice sigue siendo consultable, pero se podrían obtener resultados desactualizados.

    If you plan to index fields that might exceed 2,100,000,000 objects, where an index object is a top-level document or an embedded document, use the numPartitions index option to partition your index (supported only on Search Nodes deployment) or shard your cluster.

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

  • El tipo de campo autocomplete puede crear índices grandes y tardar más en compilarse que otros tipos de campo. Aunque puede usar el tipo autocomplete en asignaciones dinámicas al incluirlo en una definición typeSet personalizada, recomendamos usar el tipo autocomplete solo en asignaciones estáticas para evitar implicaciones no deseadas en el rendimiento, el almacenamiento y la puntuación. Para obtener más información, consulte Cómo indexar campos para autocompletar y Mejorar el rendimiento del índice de búsqueda de MongoDB Search.

La siguiente sintaxis demuestra cómo activar MongoDB Search para la creación de índices en campos utilizando mapeos dinámicos y estáticos. Para aprender más sobre los mapeos dinámicos y estáticos, se puede consultar Mapeos dinámicos y estáticos.

1{
2 "mappings": {
3 "dynamic": true|false | {
4 "typeSet": "<typeset-name>"
5 },
6 "fields": {
7 "<field-name>": {
8 "type": "<field-type>",
9 ...
10 },
11 ...
12 }
13 },
14 "typeSets": [
15 {
16 "name": "<typeset-name>",
17 "types": [
18 {
19 "type": "<field-type>",
20 ...
21 },
22 ...
23 ]
24 },
25 ...
26 ]
27}

Se puede configurar MongoDB Search con:

  • Mapeos dinámicos para indexar automáticamente los campos según un conjunto por defecto o configurado de tipos (typeSet)

  • Mapeos estáticos para indexar solo campos especificados

You can also use dynamic mappings with static mappings. Static mappings override the dynamic mappings configuration. When you define a static mapping for a field, MongoDB Search indexes that field only according to the static mapping definition. The dynamic mapping no longer applies to that field.

Por ejemplo, si habilitas dynamic: true, MongoDB Search indexa los campos de string como el tipo string de forma predeterminada. Si luego agrega una asignación estática autocomplete para un campo de string específico, MongoDB Search indexa ese campo solo como el tipo autocomplete. Tampoco se indexa como string a menos que incluya explícitamente string en la asignación estática. Para indexar el campo como ambos tipos, debe definir ambos tipos en el arreglo de asignación estática del campo.

Los mapeos dinámicos de MongoDB Search permiten configurar MongoDB Search para indexar automática y recursivamente los campos en los datos. Los campos se pueden indexar en función del conjunto de tipos por defecto o configurando un typeSet.

Se pueden activar o configurar mapeos dinámicos:

  • En el nivel raíz mappings para aplicarse a todo el documento.

  • [Recomendado] Dentro de un tipo de campo document para aplicarlo a un objeto especificado.

  • [Recomendado] Dentro de un tipo de campo embeddedDocuments para aplicar a un arreglo especificado de objetos que requieren comparaciones de queries elemento por elemento (similar a $elemMatch).

Nota

Mejores prácticas

Los mapeos dinámicos podrían resultar en la indexación de un alto número de campos únicos, lo que ocupa más espacio en disco y podría ser menos eficiente. Utilice asignaciones dinámicas únicamente si necesita índice campo que cambian regularmente o que son desconocidos. Utilice siempre asignaciones dinámicas dentro de un documento, no a nivel del documento principal.

Cuando se utilizan mapeos dinámicos para crear un índice para los datos:

  • MongoDB Search también indexa dinámicamente todos los campos anidados admitidos por el typeSet en un objeto document en los datos.

  • Si un campo contiene datos polimórficos, MongoDB Search indexa automáticamente el campo como todos los tipos admitidos por el typeSet utilizado en el índice. Si un campo contiene datos de un tipo no compatible con typeSet, MongoDB Search no indexará esos datos.

MongoDB Search uses the default typeSet when dynamic is set to true. In the default typeSet, MongoDB Search indexes the BSON types as MongoDB Search field types. The following table shows the BSON types that MongoDB Search automatically indexes as MongoDB Search field types when you use the default typeSet. MongoDB Search also automatically indexes the following BSON types when they are contained within arrays and objects.

Tipo BSON
Tipo de campo de búsqueda de MongoDB

Booleano

fecha

Double, entero de 32 bits, entero de 64 bits

ObjectId

String

UUID

Nulo

La siguiente es la sintaxis para activar el conjunto de tipos por defecto para las asignaciones dinámicas:

1{
2 "mappings": {
3 "dynamic": true
4 }
5}

For index examples that demonstrate indexing all fields using the default typeSet, see Dynamic Mapping Examples.

Specify the MongoDB Search field types to index dynamically by configuring a typeSet. You can configure any BSON type to be automatically indexed as any MongoDB Search field type except document, embeddedDocuments, vector, or deprecated field types.

Un typeSet tiene la siguiente sintaxis:

Nota

No se puede configurar un typeSet desde la interfaz de usuario de Atlas Visual Editor. Utilizar la interfaz de usuario de Atlas JSON Editor en su lugar.

1{
2 "mappings": {
3 "dynamic": {
4 "typeSet": "<typeset-name>"
5 },
6 "fields": {
7 "<field-name>": {
8 "type": "<field-type>",
9 ...
10 },
11 ...
12 }
13 },
14 "typeSets": [
15 {
16 "name": "<typeset-name>",
17 "types": [
18 {
19 "type": "<field-type>"
20 },
21 ...
22 ]
23 },
24 ...
25 ]
26}

Antes de configurar un typeSet, se debe considerar lo siguiente:

  • No se puede definir el mismo tipo de campo varias veces en el mismo objeto typeSet. Solo se puede configurar una única definición typeSet para cada tipo de campo.

    Por ejemplo, no se pueden definir múltiples configuraciones para el tipo number en la misma definición de typeSet.

  • Se pueden configurar mapeos dinámicos con el analizador multi.

Para ejemplos de índice que demuestran el uso de la configuración personalizada de typeSet, consultar Ejemplos de mapeo dinámico.

Utilizar mapeos estáticos para configurar opciones de índice para campos que no se desea indexar dinámicamente, o para configurar un solo campo independientemente de otros en un índice. Cuando se utilizan asignaciones estáticas, MongoDB Search crea índices de búsqueda solo de los campos que se especifican en mappings.fields. También se pueden utilizar asignaciones estáticas para excluir campos del índice.

To use static mappings to configure index options for only some fields, set mappings.dynamic to false and specify the field name, data type, and other configuration options for each field that you want to index. You can specify the fields in any order.

Si omite el campo mappings.dynamic, se establece por defecto en false.

1{
2 "mappings": {
3 "dynamic": true|false,
4 "fields": {
5 "<field-name>": {
6 "type": "<field-type>",
7 ...
8 },
9 ...
10 }
11 }
12}

Para definir el índice de un campo anidado, se deben definir los mapeos para cada campo principal de ese campo anidado. No se puede usar la notación de puntos para usar el índice de campos anidados de forma estática. Para ver ejemplos, se pueden consultar los Ejemplos o Ejemplo de mapeo combinado a continuación.

You can use static mappings to index fields as multiple types. To index a field as multiple types, define the types in the field definition array for the field. You can index any field as any supported types using static mappings. To learn more, see MongoDB Search Field Types.

El siguiente ejemplo muestra la definición de un campo para la indexación del mismo como múltiples tipos.

1{
2 "mappings": {
3 "dynamic": true|false | {
4 "typeSet": "<type-set-name>"
5 },
6 "fields": {
7 "<field-name>": [
8 {
9 "type": "<field-type>",
10 ...
11 },
12 {
13 "type": "<field-type>",
14 ...
15 },
16 ...
17 ],
18 ...
19 }
20 }.
21 "typeSets": [
22 {
23 "name": "<typeset-name>",
24 "types": [
25 {
26 "type": "<field-type>"
27 },
28 ...
29 ]
30 },
31 ...
32 ]
33}

For other index examples that demonstrate static mappings, see Static Mapping Example.

MongoDB Search doesn't support the following BSON data types:

  • Decimal128

  • Código JavaScript con alcance

  • Clave máxima

  • Min key

  • Expresión regular

  • Marca de tiempo

MongoDB Search automatically stores fields of type string on mongot. You can store fields of all supported data types on MongoDB Search using the Define Stored Source Fields in Your MongoDB Search Index option in your index definition. To learn more about mongot and MongoDB Search node architecture, see MongoDB Search Deployment Options.

La siguiente tabla enumera los tipos de datos BSON admitidos y los tipos de campos de MongoDB Search que se pueden utilizar para indexar los tipos de datos BSON. La tabla también enumera los operadores y colectores que se pueden utilizar para hacer queries de los valores de los campos.

Tipo BSON
Tipo de campo de búsqueda de MongoDB
Operadores y recolectores

Operadores que admiten el tipo de datos en el arreglo.

Booleano

fecha

fecha

Double

Double

Double

entero de 32 bits

entero de 32 bits

entero de 64 bits

entero de 64 bits

Nulo

N/A

Objeto

Operadores que brindan soporte a los tipos de campo en el objeto.

Objeto

embeddedDocument (para un arreglo de objetos)

ObjectId

String

String

String

String

vector

Estos operadores no brindan soporte para un arreglo de strings.

MongoDB Search no incluye un tipo de campo para la indexación de valores nulos porque MongoDB Search indexa automáticamente los valores nulos tanto para campos indexados de forma estática como dinámica.

Obsoleto. Para aprender más sobre los tipos de campo de faceta obsoletos y sus contrapartes actualizadas, se puede consultar Comparación de tipos de campo para facetas.

Arreglo de valores de double o int.

Nota

You can store fields of all supported data types on MongoDB Search using the storedSource option.

The following sample index definitions on the sample_mflix.movies collection demonstrate how to index fields using dynamic and static mappings. You can load the sample data on your cluster to try the examples. To learn more about how to create MongoDB Search indexes, see MongoDB Search Quick Start.

Las siguientes definiciones de índices de muestra demuestran cómo utilizar mappings dinámicos.

Las siguientes definiciones de índices de muestra demuestran cómo utilizar mapeos estáticos.

Los siguientes ejemplos de definiciones de índices combinan mapeos dinámicos con mapeos estáticos.