【问题标题】:Mongo map.reduce errorMongo map.reduce 错误
【发布时间】:2015-09-15 01:04:39
【问题描述】:
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 失败:{ “errmsg”:“异常:TypeError:无法在 _funcs1 (_funcs1:2:37) 附近的 'is.account.length;i++)'(第 2 行)处读取未定义的属性 'length'\n”, “代码”:16722, “好”:0

【问题讨论】:

  • 似乎这里的反对票对于寻求知识的人来说是不公平的

标签: javascript mongodb mongodb-query


【解决方案1】:

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

由于这是 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() 是避免此类错误的关键,方法是测试 this 在对象中确实存在

【讨论】:

    猜你喜欢
    • 2021-06-13
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2012-07-25
    • 1970-01-01
    相关资源
    最近更新 更多