При инициализации приложения однократно подключайся к базе данных с помощью
MongoClient. Объект
MongoClient создаёт пул соединений к БД, и сам восстановит соединение в случае разрыва. Также при инициализации рекомендую получить все необходимые коллекции для дальнейшей работы с ними, т.к. помимо оверхеда на создание JS-объектов в режиме
strict получение коллекции вызывает проверку существования коллекции в базе данных. При этом закэшированные объекты коллекций будут использовать вышеописанные преимущества объекта
MongoClient - пул соединений и переподключение в случае разрыва. Самостоятельно закрывать соединения не нужно, контекста и блокировок у соединения нет. Т.е., логика примерно такая (очень условно, без учёта архитектуры приложения):
// init db:
MongoClient.connect('mongodb://localhost:27017/dbName', function(err, db){
cached.db = db;
// init collection:
db.collection('collName', { strict: true }, function(err, coll){
cached.coll = coll;
});
});
// usage in request:
cached.coll.insert(...);