使用带有MongoDB实例的Mongoose,如何才能删除数据库实例的所有集合中的所有文档,而不一定破坏集合本身或它们的索引?
对比:
await mongoose.connection.db.dropDatabase();删除给定的数据库,包括所有集合、文档和索引。
根据猫鼬博士,这是不想要的。
发布于 2022-01-14 03:33:48
迭代由Connection.prototype.collections哈希值提供的数据库中的所有集合,并使用Query.prototype.deleteMany()删除集合中的每个文档。
deleteMany()查询/操作是异步的(它返回一个类似Query承诺的对象)。为了迭代地对所有集合执行操作,我们可以通过异步回调将每个集合映射到一个承诺,在异步回调中,我们对调用进行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
}));
}https://stackoverflow.com/questions/70705744
复制相似问题