在MongoDB数据库中删除集合

时间:2018-11-26 19:27:16

标签: mongodb

是否有一种方法可以使用一个命令将所有集合拖放到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数据库中?

2 个答案:

答案 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;