ฉันต้องการทราบว่ามีคำสั่งให้ทิ้งฐานข้อมูลทั้งหมดจาก MongoDB ของฉันหรือไม่?
ฉันรู้ว่าฉันต้องการวางข้อมูลเพียงรายการเดียวฉันต้องพิมพ์ชื่อของฐานข้อมูลเหมือนรหัสด้านล่าง แต่ฉันไม่ต้องการระบุ
mongo DB_NAME --eval 'db.dropDatabase();'
ฉันต้องการทราบว่ามีคำสั่งให้ทิ้งฐานข้อมูลทั้งหมดจาก MongoDB ของฉันหรือไม่?
ฉันรู้ว่าฉันต้องการวางข้อมูลเพียงรายการเดียวฉันต้องพิมพ์ชื่อของฐานข้อมูลเหมือนรหัสด้านล่าง แต่ฉันไม่ต้องการระบุ
mongo DB_NAME --eval 'db.dropDatabase();'
คำตอบ:
คุณสามารถสร้าง javascript loop ที่ทำงานแล้วเรียกใช้งานใน 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();
})
บันทึกลงใน 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 เพียงแก้ไขการลดลงของ dbs ระบบ
การเพิ่มคำตอบของ @ 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 shell หรืออัปเดตข้อมูลที่ต้องการอัปเดตทุกครั้งที่เปิดเชลล์
คุณสามารถทำได้อย่างง่ายดายผ่านไดรเวอร์ 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()'
หรือคุณสามารถเริ่มเซสชัน Mongo บนเทอร์มินัลของคุณแล้วเขียน
db.dropDatabase()
ซึ่งก็เหมือนกันเป๊ะ.
var mongo = db.getMongo(); mongo.getDBNames().forEach(function (dbname) { var db = mongo.getDB(dbname); db.dropDatabase(); });