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的问题