Tipos de Datos en NoSQL (MongoDB)
Documento técnico sobre los tipos de datos en MongoDB, su estructura interna y aplicaciones recomendadas, con enfoque práctico para modelado flexible, consulta eficiente y compatibilidad con sistemas distribuidos.
1. Tipos Primitivos
| Tipo | Equivalente BSON | Descripción | Recomendaciones de Uso |
|---|---|---|---|
String | String | Cadena de texto UTF-8 | Nombres, direcciones, contenido textual |
NumberInt | Int32 | Entero de 32 bits | Contadores, flags, rangos pequeños |
NumberLong | Int64 | Entero de 64 bits | Timestamps, acumuladores grandes |
NumberDouble | Double | Punto flotante de doble precisión | Cálculos estadísticos, valores aproximados |
Boolean | Boolean | Verdadero o falso | Estados lógicos, activación/desactivación |
Date | Date | Fecha y hora en milisegundos desde epoch | Registro temporal, TTL |
Null | Null | Ausencia de valor | Campos opcionales, consistencia semántica |
2. Tipos Complejos
| Tipo | BSON | Descripción | Recomendaciones de Uso |
|---|---|---|---|
Object | Document | Objeto anidado con subcampos | Modelado de entidades jerárquicas |
Array | Array | Lista ordenada de elementos | Relaciones 1:N, series de valores |
Embedded Document | Document | Subdocumento incrustado | Evitar JOINs, mejorar eficiencia de lectura |
ObjectId | ObjectId | ID único hexadecimal de 12 bytes | Claves primarias, referencias de documentos |
Binary | Binary | Datos binarios (Buffer) | Archivos, imágenes, tokens codificados |
Code | JavaScript | Fragmentos de código JS ejecutable | Validaciones o filtros avanzados (uso limitado) |
3. Tipos Especiales y Sistema
| Tipo | BSON | Descripción | Recomendaciones de Uso |
|---|---|---|---|
Timestamp | Timestamp | Marca de tiempo con orden de inserción | Registros secuenciales, replicación interna |
Decimal128 | Decimal128 | Decimal de alta precisión (128 bits) | Finanzas, valores exactos |
MinKey | MinKey | Valor menor posible | Comparaciones límite inferior |
MaxKey | MaxKey | Valor mayor posible | Comparaciones límite superior |
Undefined | Undefined | Valor sin definir (obsoleto) | No recomendado, incompatible en versiones nuevas |
4. Recomendaciones Generales
- Flexible por diseño: NoSQL permite estructura variable, ideal para datos heterogéneos o en evolución.
- Documentos embebidos: Mejoran el rendimiento de lectura; evita sobre-anidamientos que dificultan actualizaciones.
- Referencias vs. Embedding: Usa referencias (
ObjectId) si los datos se comparten entre colecciones. - Decimal128: Preferido en sistemas financieros; evita usar
Doubleen cálculos monetarios. - Indexación de Arrays: MongoDB permite indexar elementos individuales de un array, útil para filtros complejos.
- ⏱ TTL y fechas: Combina campos
Datecon TTL Index para eliminar documentos automáticamente. - Evita tipos obsoletos:
UndefinedyCodeson poco usados y tienen implicaciones de seguridad y compatibilidad.