2013-05-13 19 views
6

是否有可能?我有自動生成的mongoDB集合,在某個時刻我需要放棄。我知道他們的收藏名稱模式,而且他們太多了,所以用手將它們放下不是一種選擇。我看看使用正則表達式的所有示例都涉及查詢,但不涉及數據庫命令。我知道我可以遍歷所有集合並按名稱篩選我可以使它工作,但如果可能,我正在尋找更方便和單一的命令(我想直接在shell中使用它):使用正則表達式刪除MongoDB集合

任何建議?

謝謝!

+1

檢查這些:http://stackoverflow.com/questions/11206890/how-to-delete-lots-of-mongodb-collections-at-once – jmingov 2013-05-13 11:01:16

+0

當您自動生成和自動降了不少的收藏你可能做錯了什麼。 – Philipp 2013-05-13 13:38:03

+0

@ Philipp這是一個非常具體的用例:) – jarandaf 2013-05-13 17:55:25

回答

12

可以使用MongoDB的控制檯做到這一點:

regExp = /test/; 
db.getCollectionNames().filter(function(name){ 
    return name.match(regExp) 
}).forEach(function(name){ 
    db.getCollection(name).drop() 
}); 

你可以使用任何正則表達式來匹配您的收藏名稱。

+0

你是對的,似乎是唯一的工作方法(儘管我想避免它)。如果不久將提供其他可能的解決方案,我會接受它作爲答案。謝謝你的時間! – jarandaf 2013-05-13 17:58:32

4
db.getCollectionNames().forEach(function(c) { 
    if(c.match("^system.indexes")) { 
     db.getCollection(c).drop(); 
    } 
    });