MongoDB:删除名称与字符串匹配的所有集合

Zan*_*aes 12 mongodb

我对我的数据库进行了一些重组,不再需要某些集合.但是,有太多的东西要用手去除(实际上是数千个).每个有问题的集合都以"cache_"开头,并包含一些我想确保完全清理的索引.

我试图了解如何使用mongo shell来遍历所有集合名称并删除以"cache_"开头的集合.根据Queries和Cursors文档,我了解如何循环集合中的文档,而不是如何使用MongoDB shell循环遍历数据库中的集合.

在伪代码中,这就是我需要的:

var all_collections = show collections
for(var collection in all_collections)
    if(collection.name.indexOf('cache_')==0)
        collection.drop()
Run Code Online (Sandbox Code Playgroud)

FWIW,我已经完成了搜索"mongodb循环通过集合名称"等等,并没有找到任何东西,但也许我sux at teh googlez = P

在一个相关的说明...在进行这种程度的重组后,我应该做一个db.repairDatabase()或任何类型的事情,以确保丢弃的索引等都很好,干净?

谢谢.

ggr*_*ner 27

使用db.getCollectionNames()来获取所有集合,并将它们存储在数组中.

var collectionNames = db.getCollectionNames();
for(var i = 0, len = collectionNames.length; i < len ; i++){
    var collectionName = collectionNames[i];
    if(collectionName.indexOf('cache_') == 0){
        db[collectionName].drop()
    }
}
Run Code Online (Sandbox Code Playgroud)