Mangosta.js: eliminar colección o DB
¿Es posible eliminar la colección o la base de datos completa usando mangosta?js?
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) {...});
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
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()
}
})
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) {...});
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();
}
});
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