docs: function getCollection(key, collectionName, database, options, callback) {
      getDatabaseCached(database, options, getOrCreateCollection)
  
      function getOrCreateCollection(err, db) {
          if (err) {
              return callback(err)
          }
  
          // get the collection
          db.collection(collectionName, extend({
              safe: true
          }, options.collectionOptions), createIfNotExist)
  
          function createIfNotExist(err, collection) {
              // if not exist create it
              if (err && err.message.indexOf(" does not exist") !== -1) {
                  return db.createCollection(collectionName, extend({
                      safe: true
                  }, options.createCollectionOptions), returnCollection)
              }
  
              if (err) {
                  return callback(err)
              }
  
              callback(null, collection)
          }
      }
  
      function returnCollection(err, col) {
          if (err) {
              return callback(err)
          }
  
          callback(null, col)
      }
  }