繁体   English   中英

在MongoDB数据库中删除集合

[英]Drop Collections in MongoDB Database

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

您可以尝试以下方法:

db.getCollectionNames().forEach(function(x) {db[x].drop()})

考虑到您对特权的实验,它应该可以工作。

但是,如删除MongoDB数据库中的所有内容所述,dropDatabase()应该会导致更合适的解决方案,因此,如果情况再次发生,则查看用户的角色/特权可能是更可取的方法。

您还将在那时找到一种或多或少正确的方法来避免在那里删除系统集合(在集合名称的任何部分中都将查找“ system。”)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM