Разные драйверы по разному решают эту задачу, нативный например вот так
github.com/mongodb/node-mongodb-native/blob/master/docs/articles/MongoClient.md
В исходниках можно посмотреть что-же на самом деле происходит.
Но в общем случае — правильным будет: открыть коннект -> записать/прочитать -> закрыть коннект
Есть исключительные случаи, когда такое поведение накладно, например у меня была задача, еогда очень маленькие порции данных приходили очень часто, настолько, что открытие/закрытие коннекта на фоне общего цикла «получили-записали» было просто неприлично большим.
Но в таком случае необходимо обязательно предусматривать сброс при первом существенном простое.
У монги как-то плоховато с длинными коннектами, ну по крайней мере так было раньше…