2012-03-06 3 views
1

여러 컬렉션에서 개체를 삭제할 수있는 방법이 있습니까? MongoDB에서이 5 개의 모음 명령의 모든 것을 삭제 하시겠습니까?여러 컬렉션의 항목을 한 번에 삭제

Mongo 데이터베이스의 각 컬렉션에서 수동으로 삭제하는 것은 시간이 많이 걸립니다.

답변

1

Andrew가 언급했듯이이 작업을 수행하는 방법은 없지만 Javascript를 사용하여 원하는 것을 얻을 수 있습니다. 내가 빨리 데이터베이스 목록을 드롭하고 싶었 예를 들어, (그리고 불결하게, 이것은 단지 개념 증명 코드 예제입니다!) :

var deletelist = ["deleteme1", "deleteme2", "deleteme3"] 
deletelist.forEach(
    function deletedbs(name) { 
     db = db.getMongo().getDB(name); 
     db.dropDatabase(); 
     print(name + " deleted"); 
    } 
) 

물론 어떤 오류 검사,하지만 서버 측의 이런 종류의 스크립트는 교차 수집 및 교차 데이터베이스 기능을 위해 작동합니다. 모든 데이터베이스에 뭔가를 실행하고자한다면, 다음과 같은 목록을 만들 수 있습니다 :

var allDBs = db.getMongo().getDBNames() 
for(var name in allDBs){ 
     db = db.getMongo().getDB(name); 
     db.<command to execute on each DB>; 
} 

은 물론, 당신은 그래서 당신은 당신의 데이터베이스를 파괴하지 않도록이 같은 일을 실행할 때 매우 신중해야,

http://www.mongodb.org/display/DOCS/Server-side+Code+Execution

: 그래서 여기에 MongoDB를 워드 프로세서 확인, 광범위하게 테스트하고 신중하게 사용 :

를 자세한 내용은 서버 측 JS에

1

없음 실제로, 당신은 단지 수동으로 각 컬렉션에서 모든 항목을 제거 할 필요가 없습니다 :

db.foo1.remove({}) 
db.foo2.remove({}) 
또한

성능에 대해 관심이 있다면, 당신은 모든 모음을 놓을 수를 더 빨리 있어야 :

db.foo1.drop() 
db.foo2.drop() 

다른 방법으로 이러한 5 개의 모음을 자주 삭제해야하는 경우 하나의 데이터베이스 아래에 그룹화하고 전체 데이터베이스를 삭제할 수 있습니다.

use dbWithFiveCollections 
db.dropDatabase() 
관련 문제