如何删除MongoDB中的所有数据库?

Pon*_*han 1 database mongodb nosql

我的 MongoDB 中有一个数据库列表。如何删除除所有数据库localadminconfig
在此处输入图片说明

kev*_*adi 5

您可以getDBNames()mongoshell 中使用该方法。

必须从Mongo()实例调用此方法。不幸的是,我认为该getDBNames()方法没有记录。

获取数据库名称后,您可以循环遍历它们以使用以下内容删除不需要的名称:

Mongo().getDBNames().forEach(function(x) {
  // loop through all the database names
  if (['admin', 'config', 'local'].indexOf(x) < 0) {
    // drop database if it's not admin, config, or local
    Mongo().getDB(x).dropDatabase();
  }
})
Run Code Online (Sandbox Code Playgroud)

例如:

> show dbs
admin   0.000GB
config  0.000GB
local   0.001GB
test    0.000GB
test2   0.000GB
test3   0.000GB

> Mongo().getDBNames().forEach(function(x) {
...   if (['admin', 'config', 'local'].indexOf(x) < 0) {
...     Mongo().getDB(x).dropDatabase();
...   }
... })

> show dbs
admin   0.000GB
config  0.000GB
local   0.001GB
Run Code Online (Sandbox Code Playgroud)


Al *_*had 5

我使用本教程中的解决方案解决了这个问题

我在我的 mongo shell 中运行了这段代码:

var dbs = db.getMongo().getDBNames()
for(var i in dbs){
    db = db.getMongo().getDB( dbs[i] );
    if (db.getName() !== 'admin' && db.getName() !== 'local') 
    {
        print( "dropping db " + db.getName() );  
        db.dropDatabase();
    }
}
Run Code Online (Sandbox Code Playgroud)