使用正则表达式删除MongoDB集合

9
可以吗?我有自动生成的mongoDB集合,但在某个时刻需要将其删除。我知道它们的集合名称模式,但数量太多,手动删除不是一个选项。我查看过的所有示例都使用正则表达式进行查询而不是数据库命令。我知道可以遍历所有集合并按名称筛选来解决,但我正在寻找更方便和单一的命令(我希望直接在Shell中使用它),如果可能的话 :)。
有任何建议吗?
谢谢!

1
请查看以下内容:https://dev59.com/62gu5IYBdhLWcg3wnYLo - jmingov
当您自动生成和自动删除大量集合时,很可能出现了一些问题。 - Philipp
@Philipp 这是一个非常具体的用例 :) - jarandaf
@3boll,感谢链接,我的快速线程搜索中错过了它! - jarandaf
2个回答

17

您可以使用MongoDB控制台完成此操作:

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

您可以使用任何正则表达式来匹配您的集合名称。


你说得对,这似乎是唯一可行的方法(虽然我本来想避免它)。如果没有其他可能的解决方案很快提供,我将接受它作为答案。感谢您的时间! - jarandaf

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接