2012-07-12 82 views

Respuesta

51

Sí, aunque lo hace a través del controlador MongoDB nativo y no de Mongoose. Asumiendo una variable requerida, conectada, mongoose, se puede acceder al objeto nativo Db a través del mongoose.connection.db, y ese objeto proporciona los métodos dropCollection y dropDatabase.

// 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) {...}); 
+0

Muchas gracias! – WHITECOLOR

+0

Tenga en cuenta que estos métodos también devuelven promesas, por lo que puede hacer cosas como 'esperar a mongoose.connection.db.dropCollection ('foo');' en lugar de tener dificultades con las devoluciones de llamadas –

1

Mongoose hace referencia a la conexión en cada modelo. Por lo tanto, puede que le resulte útil también eliminar la base de datos o la 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

En Mangosta 4.9.8, se podría utilizar el siguiente para retirar la acumulación asociada al modelo.

ModelName.remove({}, function(err, row) { 
    if (err) { 
     console.log("Collection couldn't be removed" + err); 
     return; 
    } 

    console.log("collection removed"); 
}) 
+0

Esto no elimina la colección. Elimina todos los registros en la colección. Para una gran cantidad de registros, puede llevar una cantidad significativa de tiempo, lo que provoca tiempos de espera ... – user3616725

Cuestiones relacionadas