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

问题描述 投票:0回答:1

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

对比:

await mongoose.connection.db.dropDatabase();

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

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

javascript node.js mongodb mongoose mongodb-query
1个回答
5
投票

迭代数据库中由

Connection.prototype.collections
哈希值给出的所有集合,并使用
Query.prototype.deleteMany()
删除集合中的每个文档。

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

async function clearCollections() {
  const collections = mongoose.connection.collections;

  await Promise.all(Object.values(collections).map((collection) =>
    collection.deleteMany({}) // an empty mongodb selector object ({}) must be passed as the filter argument
  ));
}
© www.soinside.com 2019 - 2024. All rights reserved.