Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Reducir la cantidad de colecciones

Crear demasiadas colecciones puede disminuir el rendimiento. Con cada colección, MongoDB crea una por defecto Índice _id, que utiliza almacenamiento adicional. Si creas colecciones excesivas, esas colecciones e índices pueden agotar los recursos del set de réplicas y disminuir el rendimiento.

Considera el siguiente esquema que almacena lecturas diarias de temperatura que se toman cada hora. El temperature La base de datos almacena las lecturas de cada día en colecciones separadas.

// Temperatures for May 10, 2024
{
_id: 1,
timestamp: "2024-05-10T010:00:00Z",
temperature: 60
},
{
_id: 2
timestamp: "2024-05-10T011:00:00Z",
temperature: 61
},
{
_id: 3
timestamp: "2024-05-10T012:00:00Z",
temperature: 64
}
...
// Temperatures for May 11, 2024
{
_id: 1,
timestamp: "2024-05-11T010:00:00Z",
temperature: 68
},
{
_id: 2
timestamp: "2024-05-11T011:00:00Z",
temperature: 72
},
{
_id: 3
timestamp: "2024-05-11T012:00:00Z",
temperature: 72
}
...

Con un número ilimitado de colecciones, la cantidad de índices _id predeterminados puede crecer y degradar el rendimiento.

Además, este enfoque requiere una $lookup operación para realizar consultas en múltiples colecciones. Las$lookup operaciones agregan complejidad a la consulta y pueden agotar los recursos.

Para reducir el número de colecciones, descarta o archiva las colecciones no utilizadas, o remodela tu esquema de datos consolidando colecciones relacionadas, desnormalizando datos o aprovechando documentos incrustados donde sea apropiado.

Puedes modificar el esquema para almacenar las lecturas de temperatura de cada día en una sola colección. Por ejemplo:

db.dailyTemperatures.insertMany( [
{
_id: ISODate("2024-05-10T00:00:00Z"),
readings: [
{
timestamp: "2024-05-10T10:00:00Z",
temperature: 60
},
{
timestamp: "2024-05-10T11:00:00Z",
temperature: 61
},
{
timestamp: "2024-05-10T12:00:00Z",
temperature: 64
}
]
},
{
_id: ISODate("2024-05-11T00:00:00Z"),
readings: [
{
timestamp: "2024-05-11T10:00:00Z",
temperature: 68
},
{
timestamp: "2024-05-11T11:00:00Z",
temperature: 72
},
{
timestamp: "2024-05-11T12:00:00Z",
temperature: 72
}
]
}
] )

El esquema actualizado requiere menos recursos que el original. En lugar de necesitar un índice separado para cada día, el índice por defecto _id facilita ahora las consultas por fecha.

Volver

Evitar el arreglo ilimitado

Obtén una insignia de habilidad

Domine "Patrones y antipatrones avanzados de esquemas" de forma gratuita.

Más información

En esta página