我想删除所有MongoDB集合中的所有文档。有没有一种方法可以删除所有集合中的所有文档。
我使用的是db.collection.remove({})
,但是它只删除一个集合中的所有文档。有什么命令要做吗?我主要使用NodeJS,也许有机会使用NodeJS删除所有集合中的所有文档?
很抱歉,问题很傻,刚开始在MongoDB中工作。
答案 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的优点,因为它不会在名称不匹配时引发错误。