有没有一种方法可以使用一个命令删除 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"
}
Run Code Online (Sandbox Code Playgroud)
但是,我可以毫无问题地删除数据库中的每个集合db.collection.drop()。
> use MyDb
switched to db MyDb
> db.collection1.drop();
true
> db.collection2.drop();
true
> db.collection3.drop();
true
Run Code Online (Sandbox Code Playgroud)
那么有没有办法删除 MongoDB 数据库中的所有集合而不是使用db.dropDatabase()?
您可以尝试以下操作:
db.getCollectionNames().forEach(function(x) {db[x].drop()})
Run Code Online (Sandbox Code Playgroud)
鉴于您对特权的实验,它应该有效。
但是, dropDatabase() 应该会导致更合适的解决方案,如删除 MongoDB 数据库中的所有内容 中所述,因此如果场景再次出现,查看用户的角色/权限可能是一种更可取的方法。
您还会在当时找到一种或多或少正确的方法来避免删除系统集合(在集合名称的任何部分中寻找“system.”)。
| 归档时间: |
|
| 查看次数: |
2800 次 |
| 最近记录: |