我想知道是否有命令从MongoDB中删除每个数据库?
我知道如果我只想删除一个数据表,我只需要输入数据库的名称,如下面的代码,但我不想指定它。
mongo DB_NAME --eval 'db.dropDatabase();'
答案 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”数据库即可。