Docs Menu
Docs Home
/ /

Reducir la cantidad de colecciones

Crear demasiadas colecciones puede reducir el rendimiento. Con cada colección, MongoDB crea una predeterminada. Índice _id, que utiliza almacenamiento adicional. Si crea colecciones excesivas, estas colecciones e índices pueden sobrecargar los recursos del conjunto de réplicas y reducir el rendimiento.

Considere el siguiente esquema que almacena lecturas diarias de temperatura que se toman cada hora. 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 la cantidad de colecciones, elimine o archive las colecciones no utilizadas o remodele su esquema de datos consolidando colecciones relacionadas, desnormalizando datos o aprovechando documentos integrados cuando sea apropiado.

Puede 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 independiente para cada día, el índice predeterminado _id ahora facilita 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