在Mongo Shell中删除MongoDB集合中的所有文档

时间:2020-06-17 07:05:10

标签: node.js mongodb mongodb-query

我想删除所有MongoDB集合中的所有文档。有没有一种方法可以删除所有集合中的所有文档。

我使用的是db.collection.remove({}),但是它只删除一个集合中的所有文档。有什么命令要做吗?我主要使用NodeJS,也许有机会使用NodeJS删除所有集合中的所有文档?

很抱歉,问题很傻,刚开始在MongoDB中工作。

1 个答案:

答案 0 :(得分:1)

如已经建议的-您可以使用.dropDatabase()删除整个数据库.collection.drop()删除集合,或者只是删除所有集合中的所有文档,然后您需要遍历集合列表并实现.collection.remove().collection.deleteMany().findAndModify(),而无需在查询条件下进行任何过滤。

要分别删除每个集合中的文档:

首先使用.getCollectionNames()列出所有集合名称,然后删除文档。

let colls = db.getCollectionNames() // Mongo shell can accept .Js Func's, if you've more collections you can use parallel as well
colls.forEach(eachColl => db[eachColl].remove({})) // or .deleteMany() or . findAndModify()

这样做,您仍将拥有数据库和MongoDB服务器上现有的空集合。也许您可以在一段时间后检查可用的收藏列表,或者重命名一些收藏夹等等。

但是,如果您只是不想查看过去会存在的集合名称,请继续使用drop命令(最好是drop database),因为您想从所有集合中删除所有文档-为什么?这是首选?这是因为与SQL数据库不同,如果您是首次向DB中的集合编写文档,则MongoDB会自动创建数据库和集合。因此,在MongoDB中,您可能不需要维护具有空集合的数据库。

假设您要查询girlfriend数据库中名为mylife的集合-假设它已经被删除/丢失/不存在,那么.find()将返回[]空数组类似于查询数据库上的空集合-这是MongoDB的优点,因为它不会在名称不匹配时引发错误。