Risposte:
puoi creare un ciclo javascript che faccia il lavoro e poi eseguirlo nella mongoconsole.
var dbs = db.getMongo().getDBNames()
for(var i in dbs){
db = db.getMongo().getDB( dbs[i] );
print( "dropping db " + db.getName() );
db.dropDatabase();
}
salvalo su dropall.js e quindi esegui:
mongo dropall.js
Prova questo comando:
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()})'"
Puoi farlo anche con un semplice comando 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();
})
Aggiungendo alla risposta di @ ALoR, per comodità puoi inserire quanto segue in ~ / .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();
}
}
Quindi al mongo shell puoi semplicemente fare
dropDatabases()
Dai documenti:
Mongo leggerà il file .mongorc.js dalla home directory dell'utente che richiama mongo. Nel file, gli utenti possono definire variabili, personalizzare il prompt della shell di mongo o aggiornare le informazioni che vorrebbero aggiornate ogni volta che lanciano una shell.
Salvalo in 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();
}
Ora puoi eseguire:
mongo drop_all_dbs.js
e tutti i database (ad eccezione di admin e local) verranno eliminati.
Questa risposta è una copia di quella di ALoR, basta correggere la caduta del dbs di sistema
Puoi farlo facilmente tramite il driver ufficiale 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(); });
Questo è sicuro da copiare ed eseguire su mongoshell. Crediti a tutte le risposte sopra. Escludi anche il database "config".
È facile quanto
mongo --eval 'db.dropDatabase()'
Oppure puoi avviare una sessione di mongo sul tuo terminale e scrivere
db.dropDatabase()
Che è esattamente lo stesso.
var mongo = db.getMongo(); mongo.getDBNames().forEach(function (dbname) { var db = mongo.getDB(dbname); db.dropDatabase(); });