Câu trả lời:
bạn có thể tạo một vòng lặp javascript để thực hiện công việc và sau đó thực thi nó trong mongoconsole.
var dbs = db.getMongo().getDBNames()
for(var i in dbs){
db = db.getMongo().getDB( dbs[i] );
print( "dropping db " + db.getName() );
db.dropDatabase();
}
lưu nó vào dropall.js và sau đó thực thi:
mongo dropall.js
Hãy thử lệnh này:
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()})'"
Bạn cũng có thể thực hiện việc này bằng một lệnh mongo đơn giản:
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();
})
Thêm vào câu trả lời của @ ALoR, để thuận tiện, bạn có thể điền phần sau vào ~ / .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();
}
}
Sau đó, tại trình bao mongo, bạn có thể đơn giản làm
dropDatabases()
Từ các tài liệu:
Mongo sẽ đọc tệp .mongorc.js từ thư mục chính của người dùng đang gọi mongo. Trong tệp, người dùng có thể xác định các biến, tùy chỉnh lời nhắc trình bao mongo hoặc cập nhật thông tin mà họ muốn cập nhật mỗi khi khởi chạy trình bao.
Lưu cái này vào 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();
}
Bây giờ bạn có thể thực thi:
mongo drop_all_dbs.js
và tất cả cơ sở dữ liệu (ngoại trừ quản trị và cục bộ) sẽ bị xóa.
Câu trả lời này là bản sao của câu trả lời ALoR, chỉ cần sửa lỗi thả dbs hệ thống
Bạn có thể làm điều đó dễ dàng thông qua trình điều khiển chính thức 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(); });
Cái này an toàn để sao chép và thực thi trên mongoshell. Tín dụng cho tất cả các câu trả lời ở trên. Chỉ cần loại trừ cơ sở dữ liệu 'cấu hình'.
Nó dễ dàng như
mongo --eval 'db.dropDatabase()'
Hoặc, bạn có thể bắt đầu một phiên mongo trên thiết bị đầu cuối của mình và viết
db.dropDatabase()
Mà hoàn toàn giống nhau.
var mongo = db.getMongo(); mongo.getDBNames().forEach(function (dbname) { var db = mongo.getDB(dbname); db.dropDatabase(); });