code: function (options) {
    EventEmitter.call(this)
  
    this.options = options
    this.mdb = new mongodb.Db(this.options.name, new mongodb.Server(this.options.host, this.options.port))
  
    this.collections = {}
    this.cache = new Cache()
  
    this.events = {
      preread: [],
      postread: [],
      precreate: [],
      postcreate: [purgeCacheFn],
      preupdate: [],
      postupdate: [purgeCacheFn],
      predelete: [],
      postdelete: [purgeCacheFn]
    }
  }
docs: The database instance
  @constructor
  
  @param {object} options - The options
  @param {string} options.name - The name
  @param {string} options.host - The hostname
  @param {number} options.port - The port
  @param {object} options.credentials - The user credentials
  @param {string} options.credentials.username - The username
  @param {string} options.credentials.password - The password
  
  @property {object} options - The options
  @property {string} options.name - The name
  @property {string} options.host - The hostname
  @property {number} options.port - The port
  @property {object} options.credentials - The user credentials
  @property {string} options.credentials.username - The username
  @property {string} options.credentials.password - The password
  @property {object} mdb - The mongodb driver database instance
  @property {object} collections - The collections configured
  @property {Cache} cache - The Cache provider
  @property {object} events - The global events configured