How do I manage MongoDB connections in a Node.js web application?
connection-pooling, database-connection, mongodb, node.js
Solution
The primary committer to node-mongodb-native says:
You open do MongoClient.connect once when your app boots up and reuse the db object. It's not a singleton connection pool each .connect creates a new connection pool.
So, to answer your question directly, reuse the db object that results from `MongoClient.connect()`. This gives you pooling, and will provide a noticeable speed increase as compared with opening/closing connections on each db action.
Problem
I'm using the node-mongodb-native driver with MongoDB to write a website. I have some questions about how to manage connections: Is it enough using only one MongoDB connection for all requests? Are there any performance issues? If not, can I setup a global connection to use in the whole application? If not, is it good if I open a new connection when request arrives, and close it when handled the request? Is it expensive to open and close a connection? Should I use a global connection pool? I hear the driver has a native connection pool. Is it a good choice? If I use a connection pool, how many connections should be used? Are there other things I should notice?