MongoDB - 删除文件夹

时间:2016-01-14 13:15:49

标签: mongodb directory

我正在尝试删除描述中包含数字大于10的MongoDB上的所有文件夹。你能告诉我怎么做吗? 几个小时以来我一直在拼命地尝试...... 非常感谢!

Robomongo

1 个答案:

答案 0 :(得分:0)

您需要一种机制来首先获取集合中的键列表,过滤列表中包含数字大于10的键,然后生成一个将与 {{3}一起使用的查询更新中的运算符。您的更新文档应具有以下结构:

var update = {
    "$unset": {
        "p11": "",
        "p12": "",
        ...
    }
}

您将在更新中用作

db.collection.update({}, update, {multi: true});

您需要 $unset 命令来生成该更新文档。以下mapreduce操作将使用文档作为值填充单独的集合:

db.collection.mapReduce(
    function() {
        var map = this;
        for (var key in map) { 
            if (map.hasOwnProperty(key)){
                num = parseInt(key.replace(/[^\d.]/g, '' ));
                if (num > 10) emit(null, key); 
            }
        }
    },
    function(key, values) {
        return values.reduce(function(o, v) {
            o[v] = "";
            return o;
        }, {});      
    }, 
    { "out": "filtered_keys" }
);

然后,您可以对结果集合运行查询以获取更新文档并执行实际更新:

var update = {
        "$unset": db.filtered_keys.findOne({"_id": null}).value
    },
    options = { "multi": true };
db.collection.update({}, update, options);