【问题标题】:MongoDB remove mapreduce collectionMongoDB 删除 mapreduce 集合
【发布时间】:2010-11-12 09:25:31
【问题描述】:

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

【问题讨论】:

    标签: mongodb mongodb-.net-driver


    【解决方案1】:

    我在交互式 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();
    

    它解决了我的问题。

    【讨论】:

    • 复制了相同的代码,但对我不起作用:( 编辑:名称不同。现在可以使用。谢谢。
    • 好主意。不过,您可能希望长期解决问题的原因。为手动清理创建(并留下)大量临时集合可能并不理想。
    • 你应该写 > if(names[i].indexOf("tmp.mr.") == 0){
    • 对于版本3.2.x它已更改为if(names[i].indexOf("tmp.mrs.") == 0)
    【解决方案2】:

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

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

    -- MongoDB docs

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

    【讨论】:

      【解决方案3】:

      实现相同目的的另一种方法是这个 sn-p:

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

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

      【讨论】:

        【解决方案4】:

        当创建它们的连接关闭时,应清理临时 map-reduce 集合。但是有时它们会保留在那里并增加数据库大小。您可以使用以下脚本删除它们:

        var database = db.getSiblingDB('yourDatabaseName');
        var tmpCollections = database.getCollectionInfos(
            {
                name: {$regex: /tmp\.mr*/},
                'options.temp': true,
            });
        
        tmpCollections.forEach(function (collection) {
            database.getCollection(collection.name).drop();
        });
        
        print(`There was ${tmpCollections.length} tmp collection deleted`);
        

        drop.tmp.js 脚本可以从命令行执行如下:

        mongo --quiet mongodb://mongodb:27137 drop.tmp.js
        

        【讨论】:

          猜你喜欢
          • 2011-05-08
          • 1970-01-01
          • 1970-01-01
          • 2011-04-23
          • 1970-01-01
          • 1970-01-01
          • 2015-09-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多