La opción 2 es probablemente la más limpia. Suponiendo que tiene una Mongoose Connection objeto llamado conn que se ha abierto usando mongoose.createConnection , puede acceder al mongo nativo Db objeto a través de conn.db . Desde allí puedes llamar a collectionNames que debería proporcionar lo que estás buscando:
conn.db.collectionNames(function (err, names) {
// names contains an array of objects that contain the collection names
});
También puede pasar un nombre de colección como parámetro a collectionNames para filtrar los resultados a lo que está buscando.
Actualización de Mongoose 4.x
En la versión 2.x del controlador nativo MongoDB que usa Mongoose 4.x, collectionNames ha sido reemplazado por listCollections que acepta un filtro y devuelve un cursor, por lo que haría esto como:
mongoose.connection.db.listCollections({name: 'mycollectionname'})
.next(function(err, collinfo) {
if (collinfo) {
// The collection exists
}
});