如何一次删除大量的mongodb集合?

nod*_*nja 15 javascript database mongodb

我的数据库中有很多mongodb集合需要删除.它们都有相似的名称,如果只能使用通配符,则很容易删除它们.但它看起来并不像.

有没有办法一次选择一堆集合来删除它们?

Yog*_*gaj 22

对于正则表达式,您可以使用string.match

db.getCollectionNames().forEach(function(c) {
    if(!c.match("^system.indexes")) { 
        db.getCollection(c).drop();
    }
  });
Run Code Online (Sandbox Code Playgroud)

  • 检查你的正则表达式.您的示例将删除`system.indexes`集合.我假设你打算放弃除`system.indexes`以外的所有东西. (3认同)

GTh*_*izh 10

# Delete Particular Collections From MongoDB

> use database_name

> delete_collection_list = ["collection1", "collection2", "collection3", "collection4", "collection5", "collection6"]

> delete_collection_list.forEach( function (collection) {
    if (db.getCollectionNames().indexOf(collection)>=0) {
        db.getCollection(collection).drop();
        print("Deleted Collection: "+ collection);
    }
  })
Run Code Online (Sandbox Code Playgroud)

  • 使用 `db.getCollection(collection)` 而不是 `db[collection]` 以避免在集合名称是保留关键字(例如“group”)时出错 (2认同)

Ser*_*sev 7

不,没有办法通过通配符/正则表达式删除多个集合.你必须逐一丢弃它们.我最近执行了类似的任务,我的脚本每秒能够减少20-30个集合.你有多少?


Par*_*ade 6

您可以使用以下命令删除所有集合.

> use database_name;

> db.getCollectionNames().forEach(function(c) {
    if(c != 'system.indexes') { 
        db.getCollection(c).drop();
    }
  });
Run Code Online (Sandbox Code Playgroud)