Answers:
您可以创建一个执行该任务的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()})'
docker exec mongodb sh -c "mongo --quiet --eval 'db.getMongo().getDBNames().forEach(function(i){db.getSiblingDB(i).dropDatabase()})'"
添加到@ALoR的答案中,为方便起见,您可以将以下内容放在〜/ .mongorc.js中
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文件。在文件中,用户可以定义变量,自定义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
并且所有数据库(admin和local除外)都将被删除。
这个答案是ALoR的副本,只是修复了系统数据库的问题
您可以通过C#官方驱动程序轻松实现:
var _mongoServer = MongoServer.Create("mongodb://localhost:27020");
var names = _mongoServer.GetDatabaseNames();
foreach (var name in names)
{
_mongoServer.DropDatabase(name);
}
就像
mongo --eval 'db.dropDatabase()'
或者,您可以在终端上启动mongo会话并编写
db.dropDatabase()
完全一样。
var mongo = db.getMongo(); mongo.getDBNames().forEach(function (dbname) { var db = mongo.getDB(dbname); db.dropDatabase(); });