Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ /

Reduza o número de collections

Nesta página

  • Sobre esta tarefa
  • Exemplo
  • Saiba mais

Criar muitas collections pode diminuir o desempenho. Com cada coleta, o MongoDB cria um índice _id padrão, que utiliza armazenamento adicional. Se você criar collections em excesso, essas collections e índices podem sobrecarregar os recursos do conjunto de réplicas e diminuir o desempenho.

Considere o seguinte esquema que armazena leituras diárias de temperatura que são feitas a cada hora. O banco de banco de dados do temperature armazena as leituras de cada dia em coleções 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
}
...

Com um número ilimitado de collections, o número de índices _id padrão pode crescer para degradar o desempenho.

Além disso, essa abordagem requer uma operação $lookup para fazer query em várias collections. As operações $lookup adicionam complexidade às queries e podem sobrecarregar recursos.

Para reduzir o número de collections, descarte ou arquive collections não utilizadas ou remodele seu esquema de dados consolidando collections relacionadas, desnormalizando dados ou aproveitando documentos incorporados quando apropriado.

Você pode modificar o esquema para armazenar as leituras de temperatura de cada dia em uma única coleção. Por exemplo:

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
}
]
}
] )

O esquema atualizado requer menos recursos do que o original. Em vez de precisar de um índice separado para cada dia, o índice _id padrão agora facilita as queries por data.

Voltar

Evite arrays ilimitadas