MongoDB отбрасывает каждую базу данных


Я хотел бы знать, есть ли команда для удаления всех баз данных из моего MongoDB?

Я знаю, что если я хочу удалить только один datatable, мне просто нужно ввести имя базы данных, как показано ниже, но я не хочу указывать его.

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

7 ответов:

вы можете создать цикл 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()})'

вы также можете сделать это с помощью простой команды монго:

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, для удобства вы можете поместить следующее в ~/.монгорк.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();
    }
}

тогда в оболочке монго вы можете просто сделать

dropDatabases()

документы:

Монго будет читать .монгорк.JS-файл из домашнего каталога пользователя, вызывающего mongo. В этом файле пользователи могут определять переменные, настраивать приглашение оболочки mongo или обновлять информацию, которую они хотели бы обновлять при каждом запуске ракушка.

сохраните это в 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) будут удалены.

этот ответ является копией Алор-один, просто исправьте капля системе ДБО

просто так

mongo --eval 'db.dropDatabase()'

или вы можете запустить сеанс mongo на своем терминале и написать

db.dropDatabase()

это ровно то же самое.