MongoDB MapReduce失败,没有错误消息

时间:2015-06-29 08:50:57

标签: mongodb mapreduce

我在2.6 mongod实例上执行增量贴图缩减,直到最近,一切都运行良好和花花公子。

db.runCommand({ mapreduce: "timespanaggregations", 
query: {
    "start" : {
        $gt: previousRun,
        }
    },
map : function Map() {
    delete this.start;
    delete this.end;
    delete this._id;
    var key = this.user,
        value = this;
    delete value.user;
    emit(key, value);
},
reduce : function Reduce(user, aggregationData) {
    var result = {};
    aggregationData.forEach(function(timespan){
        Object.keys(timespan).forEach(function(field){
            if (!result[field] || (field.indexOf('Last', field.length - 5) != -1)) {
                result[field] = timespan[field];
            } else if ((field.indexOf('Count', field.length - 5) != -1) || (field.indexOf('Sum', field.length - 5) != -1)) {
                result[field] += timespan[field];
            } else if (field.indexOf('Min', field.length - 5) != -1) {
                result[field] = (result[field] > timespan[field]) ? timespan[field] : result[field];
            } else if (field.indexOf('Max', field.length - 5) != -1) {
                result[field] = (result[field] < timespan[field]) ? timespan[field] : result[field];
            }
        });
    });
    return result;
},
sort : { "user" : 1, "start" : 1 },
out : { reduce: "lifetime_agg"  },
jsMode: true
});

我很确定我没有违反任何要求,没有任何东西没有达到极限。但是,如果我不使用查询来使块足够小,则该命令根本不执行任何操作。它只是响应:

counts: {
    input: 0,
    emit: 0,
    reduce: 0,
    output: number of records already in lifetime_agg
}

我本来期望某种错误信息。如果我强制它以较小的查询结果运行,整个过程仍然有效。

jsMode设置为true,因为我正在调整它并且记录数量远不及500,000。它的行为与jsMode设置为false的行为相同。

0 个答案:

没有答案