2012-03-06 79 views
1

有沒有辦法從多個集合中刪除對象?像在MongoDB中刪除這5個集合命令中的所有內容?一次刪除多個集合中的東西

從Mongo數據庫中的每個集合中去手動刪除是很費時間的。

回答

1

正如Andrew所說,沒有內建的方式來做到這一點,但你可以使用Javascript來獲得你想要的。例如,如果我想迅速下降的數據庫列表(和dirtily,這僅僅是一個驗證的概念代碼示例!):

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>; 
} 

當然,你需要運行這樣的事情,所以你避免破壞你的數據庫是非常,非常小心,如此廣泛的測試,並明智地使用:)

更多關於服務器端的JS,檢查了MongoDB的文檔在這裏:

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

1

沒有實際上,你只需要刪除手動從每個集合中的所有項目:

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

此外,如果你關心性能,你可以在所有下降集合,它應該是更快:

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

而且另一種方式,如果你經常需要放下這五個集合,他們組下一個數據庫和刪除整個數據庫:

use dbWithFiveCollections 
db.dropDatabase() 
相關問題