Відповіді:
ви можете створити цикл javascript, який виконує завдання, а потім виконати його в монгоконсолі.
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()})'"
Ви також можете зробити це за допомогою простої команди 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();
})
Додавши відповідь @ 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();
}
}
Тоді на оболонці монго ви можете просто зробити
dropDatabases()
З документів:
Mongo прочитає файл .mongorc.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
і всі бази даних (окрім адміністратора та локальних) будуть скинуті.
Ця відповідь є копією однієї ALoR, просто виправте падіння системних баз даних
Зробити це можна легко через офіційний драйвер c #:
var _mongoServer = MongoServer.Create("mongodb://localhost:27020");
var names = _mongoServer.GetDatabaseNames();
foreach (var name in names)
{
_mongoServer.DropDatabase(name);
}
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".
Це так просто, як
mongo --eval 'db.dropDatabase()'
Або ви можете розпочати сеанс монго на своєму терміналі та написати
db.dropDatabase()
Що абсолютно однаково.
var mongo = db.getMongo(); mongo.getDBNames().forEach(function (dbname) { var db = mongo.getDB(dbname); db.dropDatabase(); });