如何删除Mongoose中所有集合的所有文档



使用Mongoose ODM和MongoDB实例,如何删除数据库实例所有集合中的所有文档,而不必破坏集合本身或其索引?

对比:

await mongoose.connection.db.dropDatabase();

删除给定的数据库,包括所有集合、文档和索引。

根据Mongoose文档,这是不需要的。

遍历数据库中由Connection.prototype.collections哈希值给定的所有集合,并使用Query.prototype.deleteMany()删除集合中的每个文档。

deleteMany()查询/操作是异步的(它返回一个类似Querypromise的对象(。为了迭代地执行所有集合的操作,我们可以通过异步回调将每个集合映射到promise,在异步回调中await调用,并使用Promise.all在所有查询都已解析时进行解析。

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
}));
}

最新更新