Mongoose.js: remove collection or DB

Yes, although you do it via the native MongoDB driver and not Mongoose itself. Assuming a required, connected, mongoose variable, the native Db object is accessible via mongoose.connection.db, and that object provides dropCollection and dropDatabase methods.

// Drop the 'foo' collection from the current database
mongoose.connection.db.dropCollection('foo', function(err, result) {...});

// Drop the current database
mongoose.connection.db.dropDatabase(function(err, result) {...});

For those that are using the mochajs test framework and want to clean all db collections after each test, you can use the following which uses async/await:

afterEach(async function () {
  const collections = await mongoose.connection.db.collections()

  for (let collection of collections) {
    await collection.remove()
  }
})

This can now be done in Mongoose.

MyModel.collection.drop();

Hat tip: https://github.com/Automattic/mongoose/issues/4511

Tags:

Mongoose