MongoDB删除每个数据库

时间:2011-06-16 18:00:25

标签: mongodb

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

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

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

8 个答案:

答案 0 :(得分:126)

你可以创建一个执行该工作的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

答案 1 :(得分:84)

尝试此命令:

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

答案 2 :(得分:15)

您也可以使用简单的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();
 })

答案 3 :(得分:4)

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

var _mongoServer = MongoServer.Create("mongodb://localhost:27020");

var names = _mongoServer.GetDatabaseNames();
foreach (var name in names)
{
   _mongoServer.DropDatabase(name);
}

答案 4 :(得分:4)

添加到@ 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时更新他们想要更新的信息。

答案 5 :(得分:1)

将此保存到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的一个副本,只是修复系统dbs的丢失

答案 6 :(得分:0)

就像

一样简单
mongo --eval 'db.dropDatabase()'

或者,您可以在终端上启动mongo会话并编写

db.dropDatabase()

完全相同。

答案 7 :(得分:0)

var mongo = db.getMongo(); mongo.getDBNames().filter(n => n != 'admin' && n != 'local' && n != 'config').forEach(function (dbname) { var db = mongo.getDB(dbname); db.dropDatabase(); });

可以安全地在mongoshell上复制和执行该代码。归功于以上所有答案。只需排除“ config”数据库即可。