是否有一种方法可以使用一个命令将所有集合拖放到MongoDB数据库中,而无需命名每个单独的集合?
根据我的ABI V calling convention,看来执行此操作的命令是RDI
。但这给了我一个未经授权的错误:
.string %lli \n
但是,我可以使用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()
将所有集合删除到 之外的MongoDB数据库中?
答案 0 :(得分:1)
您可以尝试以下操作:
db.getCollectionNames().forEach(function(x) {db[x].drop()})
考虑到您对特权的实验,它应该可以工作。
但是,如Delete everything in a MongoDB database中所述,dropDatabasse()应该导致更合适的解决方案, 因此,如果情况再次发生,查看用户的角色/特权可能是首选的方法。
您还将在那时找到一种或多或少的正确方法,以避免在那里删除系统集合(在集合名称的任何部分中都将查找“ system。”。)。
答案 1 :(得分:0)
您可以向(例如 root
)用户授予 admin
角色访问权限:
use admin;
db.grantRolesToUser("admin", ["root"]);
use MyDb;
db.dropDatabase();
撤销访问:
use admin;
db.revokeRolesFromUser("admin", ["root"]);
您可以通过
显示用户角色show users;