Mangosta.js: eliminar colección o DB


¿Es posible eliminar la colección o la base de datos completa usando mangosta?js?

 30
Author: WHITECOLOR, 2012-07-12

5 answers

Sí, aunque lo hagas a través del controlador nativo de MongoDB y no de Mongoose. Asumiendo una variable requerida, conectada, mongoose, el nativo Db objeto es accesible a través de mongoose.connection.db, y ese objeto proporciona dropCollection y dropDatabase métodos.

// 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) {...});
 56
Author: JohnnyHK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-22 22:40:59

Esto ahora se puede hacer en Mangosta.

MyModel.collection.drop();

Punta del sombrero: https://github.com/Automattic/mongoose/issues/4511

 34
Author: David L. Walsh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-28 06:21:00

Para aquellos que están usando el framework de pruebas mochajs y desean limpiar todas las colecciones de bases de datos después de cada prueba, puede usar lo siguiente que usa async/await:

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

  for (let collection of collections) {
    await collection.remove()
  }
})
 3
Author: adamc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-28 01:28:28

Mangosta hace referencia a la conexión en cada modelo. Por lo tanto, puede ser útil también soltar la base de datos o colección de un modelo individual.

Por ejemplo:

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

// Drop the current database
User.db.db.dropDatabase(function(err, result) {...});
 1
Author: Huston Hedinger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-20 21:58:47

Para la versión 5.2.15 de Mongoose + Mocha prueba el uso donde necesita eliminar todas las colecciones antes de cada prueba.

beforeEach(async () => {
     const collections = await mongoose.connection.db.collections();

     for (let collection of collections) {
          // note: collection.remove() has been depreceated.        
          await collection.deleteOne(); 
     }
});
 0
Author: Durja Arai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-16 07:53:44