La respuesta aquí dependerá de la versión que esté ejecutando. El método descrito en el main github page implica abrir/cerrar una conexión "según sea necesario".
Actualmente, se trabaja en el correcto soporte de conjuntos de réplicas y se proporciona una agrupación básica de conexiones. De hecho, hubo un check-in ayer para dirigirse al clean up of pooled connections on error.
Dado que los documentos proporcionan este método de abrir/cerrar, este es probablemente el camino a seguir. Es lo que estoy haciendo actualmente en mis aplicaciones. En cuanto al problema que está viendo, esto puede ser un error. Una vez más, la versión en el controlador es < 1.0 y hubo un check-in ayer para algo similar a lo que está experimentando, por lo que puede haber algunos problemas.
Editar: Debo añadir que Christian es un gran tipo haciendo este trabajo en su tiempo con el apoyo limitado del equipo de 10gen. Crear un controlador de este tipo es mucho trabajo, por lo que si encuentra errores, como volver a utilizar las conexiones abiertas, definitivamente presente un error o contribuya con una solución.
Los controladores Java y node.js se comportan de manera muy diferente. El controlador de Java tiene un grupo de conexiones configurable incorporado. El controlador node.js se mueve en esa dirección, pero node.js es definitivamente diferente. –