MongoDB删除每个数据库

我想知道是否有命令从我的MongoDB中删除每个数据库?

我知道如果我只想删除一个数据表,我只需要键入数据库的名称像下面的代码,但我不想指定它。

mongo DB_NAME --eval 'db.dropDatabase();' 

你可以创build一个JavaScript循环来完成这个工作,然后在mongoconsole中执行它。

 var dbs = db.getMongo().getDBNames() for(var i in dbs){ db = db.getMongo().getDB( dbs[i] ); print( "dropping db " + db.getName() ); db.dropDatabase(); } 

保存到dropall.js然后执行:

 mongo dropall.js 

试试这个命令:

 mongo --quiet --eval 'db.getMongo().getDBNames().forEach(function(i){db.getSiblingDB(i).dropDatabase()})' 

你也可以用一个简单的mongo命令来做到这一点:

 db.adminCommand("listDatabases").databases.forEach( function (d) { if (d.name != "local" && d.name != "admin" && d.name != "apiomat" && d.name != "config") db.getSiblingDB(d.name).dropDatabase(); }) 

你可以通过c#官方驱动程序轻松完成:

 var _mongoServer = MongoServer.Create("mongodb://localhost:27020"); var names = _mongoServer.GetDatabaseNames(); foreach (var name in names) { _mongoServer.DropDatabase(name); } 

添加@ ALoR的答案,为了方便起见,你可以在〜/ .mongorc.js中join以下内容

 function dropDatabases(){ var mongo = db.getMongo(); var dbNames = mongo.getDBNames(); for (var i = 0; i < dbNames.length; i++) { var db = mongo.getDB( dbNames[i] ); print( "Dropping database " + db.getName() + "..." ); db.dropDatabase(); } } 

然后在mongo shell中,你可以简单地做

 dropDatabases() 

从文档:

Mongo将从用户调用mongo的主目录读取.mongorc.js文件。 在文件中,用户可以定义variables,定制mongo shell提示符,或更新每次启动shell时更新的信息。

保存到drop_all_dbs.js:

 var databases = db.getMongo().getDBNames() for(var i in databases){ db = db.getMongo().getDB( databases[i] ); if(db.getName() == "admin" || db.getName() == "local"){ print("skipping db " + db.getName()) continue } print( "dropping db " + db.getName() ); db.dropDatabase(); } 

现在你可以执行:

 mongo drop_all_dbs.js 

和所有的数据库(pipe理和本地除外)将被删除。

这个答案是ALoR的副本,只是修复了系统dbs的问题