MongoDB는 모든 데이터베이스를 삭제합니다.
MongoDB에서 모든 데이터베이스를 삭제할 명령어가 있는지 알고 싶습니다.
데이터 테이블을 하나만 드롭하려면 아래 코드와 같이 데이터베이스 이름을 입력하기만 하면 되지만 지정할 필요는 없습니다.
mongo DB_NAME --eval 'db.dropDatabase();'
작업을 수행하는 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.dropall에 저장한 후 다음 작업을 수행합니다.
mongo dropall.js
다음 명령을 사용해 보십시오.
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();
})
db
.getMongo()
.getDBNames()
.filter(n => !['admin','local','config'].includes(n))
.forEach(dname =>
db
.getMongo()
.getDB(dname)
.dropDatabase()
)
;
원라이너
db.getMongo().getDBNames().filter(n => !['admin','local','config'].includes(n)).forEach(dname => db.getMongo().getDB(dname).dropDatabase());
그러면 모든 DB가 삭제되지만 MongoDB의 내부 컬렉션은 유지됩니다.
이것을 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
모든 데이터베이스(admin 및 local 제외)가 삭제됩니다.
이 답변은 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();
}
}
그럼 몽고 껍데기에서는 간단하게
dropDatabases()
문서에서:
Mongo는 mongo를 호출하는 사용자의 홈 디렉토리에서 .mongorc.js 파일을 읽습니다.이 파일에서는 사용자가 변수를 정의하거나 mongo 셸 프롬프트를 커스터마이즈하거나 셸을 실행할 때마다 업데이트할 정보를 업데이트할 수 있습니다.
c# 공식 드라이버로 간단하게 할 수 있습니다.
var _mongoServer = MongoServer.Create("mongodb://localhost:27020");
var names = _mongoServer.GetDatabaseNames();
foreach (var name in names)
{
_mongoServer.DropDatabase(name);
}
다음은 특정 이름을 필터링할 수 있는 oneliner입니다.
for (const dbName of db.getMongo().getDBNames().filter(dbName => dbName.startsWith('test-'))) {console.log(dbName); const dbToDelete = db.getMongo().getDB( dbName ); dbToDelete.dropDatabase()}
이게 나한테 제일 잘 먹혔어.
이 파일을 다음 파일에 저장합니다.drop_most_databases.js
:
const databasesToSkip = ['admin', 'local', 'config'];
db.getMongo()
.getDBNames()
.forEach((dbname) => {
if (databasesToSkip.includes(dbname)) {
print(`Skipping ${dbname}`);
} else {
print(`Dropping ${dbname}...`);
db.getMongo().getDB(dbname).dropDatabase();
}
});
print(`Now, the only databases that remain are:`);
db.getMongo()
.getDBNames()
.forEach((dbname) => {
print(dbname);
});
터미널에서 실행mongo drop_most_databases.js
.
그것은 처럼 쉽다.
mongo --eval 'db.dropDatabase()'
아니면 단말기에서 mongo 세션을 시작하고 글을 쓸 수도 있습니다.
db.dropDatabase()
정확히 똑같아요
언급URL : https://stackoverflow.com/questions/6376436/mongodb-drop-every-database
'programing' 카테고리의 다른 글
현재 서버를 WebSocket으로 포인트하는 방법 (0) | 2023.03.13 |
---|---|
응답 단편 단축을 컴파일하지 못했습니다. (0) | 2023.03.13 |
JSON 파일에서 R로 데이터 가져오기 (0) | 2023.03.08 |
HTTP 요청 본문의 옵션 JSON 필드 처리 (0) | 2023.03.08 |
AngularJS Directive 요소 메서드 바인딩 - TypeError: 'in' 연산자를 사용하여 1에서 'functionName'을 검색할 수 없습니다. (0) | 2023.03.08 |