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

Reducir la cantidad de colecciones

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

Considera el siguiente esquema que almacena lecturas diarias de temperatura tomadas cada hora. La base de datos temperature 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, el número de índices _id por defecto puede aumentar y degradar el rendimiento.

Además, este enfoque requiere una operación $lookup para query en varias colecciones. Las operaciones de $lookup aumentan la complejidad de las consultas y pueden tensionar 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.

Obtén una insignia de habilidad

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

Más información