Mongo map.reduce错误

时间:2015-06-28 14:28:59

标签: javascript mongodb mongodb-query

var mapFunction1 = function() {

    for (var idx = 0; idx < this.account.length; idx++) {
        emit("saldo", this.account[idx].balance);
    }

};

var reduceFunction1 = function(keyBalance, valuesBalance) {
    return Array.sum(valuesBalance);
};

db.people.mapReduce(mapFunction1, reduceFunction1, {
    out : "saldo"
})

db.saldo.find()

并显示错误

  
    

未捕获的异常:map reduce failed:{         “errmsg”:“异常:TypeError:无法在'is.account.length; i ++)'(第2行)附近的_funcs1(_funcs1:2:37)读取undefined \ n的属性'length'”,         “code”:16722,         “ok”:0

  

1 个答案:

答案 0 :(得分:0)

这意味着在文档中找到的对象上“长度”未定义,很可能是因为该属性不存在。

由于这是mapReduce进程中的JavaScript评估,因此您的JavaScript测试需要“严格”测试这些条件:

var mapFunction1 = function() {
   if ( this.hasOwnProperty("account") {
       for (var idx = 0; idx < this.account.length; idx++) {
           emit("saldo", this.account[idx].balance);
       }
   }
}

所以.hasOwnProperty()这里是通过测试对象中实际存在来避免此类错误的关键。