Usando Mongoose ODM con una instancia de MongoDB, ¿cómo se pueden eliminar todos los documentos en todas las colecciones de la instancia de la base de datos, sin destruir necesariamente las colecciones en sí o sus índices?
Para el contraste:
await mongoose.connection.db.dropDatabase();
Elimina la base de datos dada, incluidas todas las colecciones, documentos e índices.
de acuerdo con los documentos de Mongoose , que no se desea.
Repita todas las colecciones de la base de datos proporcionadas por los valores del hash Connection.prototype.collections
y use Query.prototype.deleteMany()
para eliminar todos los documentos de la colección.
La consulta/operación deleteMany()
es asíncrona (devuelve un objeto similar a la promesa Query
). Para realizar iterativamente las operaciones para todas las colecciones, podemos asignar cada colección a una promesa con una devolución de llamada asincrónica en la que await
la llamada y usar Promise.all
para resolver cuando todas las consultas se hayan resuelto.
async function clearCollections() { const collections = mongoose.connection.collections; await Promise.all(Object.values(collections).map(async (collection) => { await collection.deleteMany({}); // an empty mongodb selector object ({}) must be passed as the filter argument })); }