回答:
あなたは仕事をする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()})'
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();
}
}
次に、mongoシェルで簡単に実行できます
dropDatabases()
ドキュメントから:
Mongoは、mongoを呼び出したユーザーのホームディレクトリから.mongorc.jsファイルを読み取ります。このファイルでは、ユーザーは変数を定義したり、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);
}
簡単です
mongo --eval 'db.dropDatabase()'
または、端末でmongoセッションを開始して、
db.dropDatabase()
まったく同じです。
var mongo = db.getMongo(); mongo.getDBNames().forEach(function (dbname) { var db = mongo.getDB(dbname); db.dropDatabase(); });