MongoDB отбрасывает каждую базу данных
Я хотел бы знать, есть ли команда удалить все базы данных из моего MongoDB?
Я знаю, хочу ли я удалить только один datatable, мне просто нужно ввести имя базы данных, как приведенный ниже код, но я не хочу указывать его.
mongo DB_NAME --eval 'db.dropDatabase();'
Ответы
Ответ 1
вы можете создать цикл 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
Ответ 2
Попробуйте выполнить следующую команду:
mongo --quiet --eval 'db.getMongo().getDBNames().forEach(function(i){db.getSiblingDB(i).dropDatabase()})'
Ответ 3
Вы также можете сделать это с помощью простой команды 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();
})
Ответ 4
Вы можете легко справиться с официальным драйвером С#:
var _mongoServer = MongoServer.Create("mongodb://localhost:27020");
var names = _mongoServer.GetDatabaseNames();
foreach (var name in names)
{
_mongoServer.DropDatabase(name);
}
Ответ 5
Добавление в ответ @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 вы можете просто сделать
dropDatabases()
Из документов:
Mongo будет читать файл .mongorc.js из домашнего каталога пользователя, вызывающего mongo. В файле пользователи могут определять переменные, настраивать приглашение оболочки mongo или обновлять информацию, которую они хотели бы обновлять каждый раз при запуске оболочки.
Ответ 6
Сохраните это для 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