É uma boa prática abrir a conexão uma vez, armazená-la em uma variável e fechá-la no final. O MongoDB recomenda isso explicitamente. Esta é a razão pela qual abrir e fechar uma conexão faz parte da API do MongoDB, em vez de acontecer automaticamente para cada consulta.
Abrir e fechar conexões para cada consulta acarretará uma sobrecarga significativa tanto em termos de desempenho (CPU + latência), tráfego de rede, gerenciamento de memória (criação e exclusão de objetos), não apenas para o cliente, mas também para o próprio servidor, o que também impacta outros clientes.
Sobre a terminologia de conexão :em alguns drivers como Java, o que é realmente criado e armazenado em uma variável não é uma conexão física, mas um
MongoClient
instância. Parece uma conexão de uma perspectiva abstrata (API), mas na verdade encapsula as conexões físicas reais e oculta a complexidade do usuário. Criando o
MongoClient
instância apenas uma vez, para os drivers que suportam isso, também permitirá que você se beneficie do conjunto de conexões onde o driver mantém conexões ativas em paralelo para você, para que você também precise criar apenas um MongoClient
instância em vários threads.