Explica cómo crear, configurar, renombrar y eliminar colecciones, junto con validators, collation, capped collections y opciones operativas relevantes.
Una colección agrupa documentos con propósito, access patterns y políticas de operación relacionadas. MongoDB puede crear una collection implícitamente al insertar el primer documento, pero crearla de forma explícita permite establecer desde el inicio validation, collation y opciones especiales.
El número de colecciones no debe copiar automáticamente el número de clases, pantallas o pequeños objetos del sistema. Cada collection debe justificar su lifecycle, queries, índices, permisos y crecimiento.
Crear colecciones sin criterio produce fragmentación, joins constantes y administración innecesaria. Mezclar documentos incompatibles en una sola colección produce índices poco útiles, validators complejos y queries difíciles.
MongoDB puede crear database y collection al realizar la primera escritura:
JavaScript
use domisys;
db.products.insertOne({name:'Café molido',active:true});
Esto es cómodo para aprendizaje y prototipos. Sin embargo, la primera escritura puede ocurrir antes de configurar validator, collation o permisos adecuados.
En entornos controlados suele ser preferible que una migración cree explícitamente la collection y sus índices.
MongoDB organiza internamente mediciones en buckets. La colección es apropiada cuando el workload realmente consiste en series de mediciones, no para cualquier documento con createdAt.
Las capacidades de updates, deletes, indexes y sharding dependen de la versión. Deben verificarse antes de diseñar producción.
Una clustered collection organiza documentos físicamente alrededor de una clustered key compatible. Puede reducir almacenamiento en ciertos workloads y cambia algunas decisiones de acceso.
No debe activarse solo porque parece una optimización. Requiere evaluar:
clave y orden de acceso;
inserciones;
range scans;
restricciones de versión;
interacción con TTL e índices secundarios.
Para la mayoría de aplicaciones generales, el índice _id normal y los índices explícitos son suficientes hasta que exista una necesidad medida.
MongoDB utiliza namespaces internos para metadata y operación. No deben tratarse como colecciones de aplicación ni modificarse manualmente salvo procedimientos documentados.
Ejemplos internos pueden variar por versión y topología. Las herramientas oficiales son preferibles a editar metadata directamente.
Los roles pueden restringir acceso por database y collection. La aplicación debería utilizar un usuario con operaciones necesarias, no roles administrativos.
Ejemplo conceptual:
Texto
application user
→ readWrite sobre domisys
→ sin userAdmin
→ sin clusterAdmin
Procesos de backup, monitoring y migración pueden necesitar usuarios separados.
Change Streams requieren una topología compatible, normalmente replica set o sharded cluster. La collection no necesita una opción “enable change streams” general, pero features como pre/post images sí requieren configuración específica y soporte de versión.
No diseñes consumidores asumiendo que un standalone local reproduce el comportamiento de producción.
Crear una collection por cliente puede producir miles de namespaces, índices y migraciones. Normalmente es preferible una collection compartida con tenantId, salvo requisitos fuertes de aislamiento.
Una collection es una frontera de estructura, índices, permisos y operación. La creación implícita es cómoda, pero la creación explícita permite controlar el contrato desde la primera escritura. Las opciones especiales deben responder a un workload real y verificarse según la versión utilizada.
Comprueba lo aprendido
¿Qué ventajas ofrece crear una collection explícitamente?
¿Por qué una collection por tenant puede convertirse en un problema operativo?
¿Cuándo una time series collection representa correctamente el dominio?
¿Qué diferencia existe entre capped collection y un broker de mensajes?
¿Qué elementos debes revisar antes de renombrar o eliminar una collection?
¿Por qué los índices forman parte del lifecycle de la collection?