在MongoDB数据库中删除集合
在MongoDB数据库中删除集合
有没有一种方法可以使用一个命令删除MongoDB数据库中的所有集合,而不需要命名每个单独的集合?
根据我所找到的,看起来执行此操作的命令是db.dropDatabase()
。但是,这给我带来了未授权的错误:
> use MyDb switched to db MyDb > db.dropDatabase(); { "ok" : 0, "errmsg" : "not authorized on MyDb to execute command { dropDatabase: 1.0, $db: \"MyDb\" }", "code" : 13, "codeName" : "Unauthorized" }
但是,我可以使用db.collection.drop()
无问题地删除数据库中的每个集合。
> use MyDb switched to db MyDb > db.collection1.drop(); true > db.collection2.drop(); true > db.collection3.drop(); true
那么有没有 方法可以除了使用db.dropDatabase()
之外删除MongoDB数据库中的所有集合?
admin 更改状态以发布 2023年5月21日
你可以尝试以下操作:
db.getCollectionNames().forEach(function(x) {db[x].drop()})
鉴于你的特权实验,这应该是有效的。
然而,使用dropDatabase()可能会导致更合适的解决方案,如在MongoDB数据库中删除所有内容中所提到的,因此,查看你的用户角色/权限可能是一个更可取的方法,以防该场景再次出现。
你还会在那里找到一个比较正确的方法来避免删除系统集合(“system.”在集合名称的任何部分中都会被寻找)。