首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除“猫鼬”中所有集合的所有文档

如何删除“猫鼬”中所有集合的所有文档
EN

Stack Overflow用户
提问于 2022-01-14 03:33:48
回答 1查看 1.7K关注 0票数 1

使用带有MongoDB实例的Mongoose,如何才能删除数据库实例的所有集合中的所有文档,而不一定破坏集合本身或它们的索引?

对比:

代码语言:javascript
复制
await mongoose.connection.db.dropDatabase();

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

根据猫鼬博士,这是不想要的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-14 03:33:48

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

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

代码语言:javascript
复制
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
  }));
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70705744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档