我想删除所有 MongoDB 集合中的所有文档。有没有办法删除所有集合中的所有文档。
我正在使用db.collection.remove({}),但它只删除一个集合中的所有文档。有什么命令可以做吗?我主要使用 NodeJS,也许有机会使用 NodeJS 删除所有集合中的所有文档?
对不起,如果问题很愚蠢,刚刚开始在 MongoDB 中工作。
我想删除所有 MongoDB 集合中的所有文档。有没有办法删除所有集合中的所有文档。
我正在使用db.collection.remove({}),但它只删除一个集合中的所有文档。有什么命令可以做吗?我主要使用 NodeJS,也许有机会使用 NodeJS 删除所有集合中的所有文档?
对不起,如果问题很愚蠢,刚刚开始在 MongoDB 中工作。
正如已经建议的那样 - 您可以使用.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 数据库不同,如果您第一次将文档写入数据库中的集合,MongoDB 会自动创建数据库和集合。因此,在 MongoDB 中,您可能不需要维护具有空集合的数据库。
假设您正在查询数据库中名为集合的集合girlfriend-mylife假设它已经被删除/丢失/从未存在然后.find()将返回[]空数组,就像查询数据库上的空集合一样 - 这是 MongoDB 的优势,因为它不会抛出名称不匹配的错误。