gpt4 book ai didi

mongodb - 删除 MongoDB 数据库中的集合

转载 作者:行者123 更新时间:2023-12-02 09:54:34 25 4
gpt4 key购买 nike

有没有一种方法可以使用一个命令删除 MongoDB 数据库中的所有集合,而无需命名每个单独的集合?

据我所知found ,看起来执行此操作的命令是 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()})

考虑到您对权限的实验,它应该有效。

但是,dropDatabase() 应该会产生更合适的解决方案,如 Delete everything in a MongoDB database 中所述。 ,因此,如果这种情况再次发生,查看用户的角色/权限可能是更好的方法。

您还会发现当时编写或多或少正确的方法来避免在那里删除系统集合(在集合名称的任何部分中寻找“system.”)。

关于mongodb - 删除 MongoDB 数据库中的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53487762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com