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

标签 javascript node.js mongodb mongoose mongodb-query

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

对比:

await mongoose.connection.db.dropDatabase();

Deletes the given database, including all collections, documents, and indexes.

根据Mongoose docs ,这是不希望的。

最佳答案

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

deleteMany() 查询/操作是异步的(它返回 Query 类似 Promise 的对象)。为了迭代地执行所有集合的操作,我们可以将每个集合映射到带有异步回调的 Promise,在异步回调中我们等待调用,并使用 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
  }));
}

关于javascript - 如何删除Mongoose中所有集合的所有文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70705744/

相关文章:

javascript - 使用 Javascript 打印带有隐藏行的表

javascript - Bootstrap 提前输入自动完成从相同的值返回多个

php - 通过函数传递参数时出错。

使用 cors、express 和 google api 的 Node.js 服务器应用程序在 azure 部署后无法工作

node.js - 我有一个带有 RTSP 链接的 IP 摄像机来连接到摄像机。 Node JS 有没有开源库可以连接摄像头?

node.js - MongoDB:将 $near 运算符与 $maxDistance 一起使用时,点不在间隔内

node.js - NodeJS MongoDB 其中数组包含数组的任何元素

javascript - 如何从 rc-slider react 组件输出当前值?

javascript - 无法使用 accessToken 获取 Google 通讯录数据

linux - 在 ARM (armv7l/arm64/aarch64) 上构建 mongo shell 3.2.x - 段错误