MongoDB删除mapreduce集合

时间:2010-11-12 09:25:31

标签: mongodb mongodb-.net-driver

由于客户端代码中的错误,mongodb创建了许多“mr.mapreduce ....”集合,如何将它们全部删除(可能是掩码)。

3 个答案:

答案 0 :(得分:15)

我在交互式shell中运行脚本:

function f() {
    var names = db.getCollectionNames();
    for(var i = 0; i < names.length; i++){
    if(names[i].indexOf("mr.") == 0){
    db[names[i]].drop();}}};
f();

它解决了我的问题。

答案 1 :(得分:3)

当创建它们的连接关闭时,应清除临时map-reduce表:

  

通过数据库调用map / reduce   命令。数据库创建一个   临时收集以保持输出   操作。这个系列是   在客户端连接时清理   关闭,或明确删除。   或者,可以指定一个   永久输出集合名称。地图   和减少函数写入   JavaScript并在服务器上执行。

- MongoDB docs

如果没有,您可以使用相同的方法删除它们,删除任何其他集合。但它可能会有点重复。

答案 2 :(得分:3)

实现相同目标的另一种方法是这个片段:

db.system.namespaces.find({name: /tmp.mr/}).forEach(function(z) {
  try{
    db.getMongo().getCollection( z.name ).drop();
  } catch(err) {}
});

Pro:它不会尝试将所有命名空间收集到JavaScript数组中。 MongoDB会在太多名称空间上发生段错误。