MongoDB MapReduce map函数访问嵌套数组时出错:TypeError: Cannot read prop



我在mongodb中有一个大型数据结构,看起来如下:

datastructure = {
    "id": "id",
    "UpperLevel": [{
        "LowerLevel": [{
            "Name": "Name1",
            "Value": "Value1",
            "Flag": "Flag1"
        }, {
            "Name": "Name2",
            "Value": "Value2",
            "Flag": "Flag2"
        }, {
            "Name": "Name3",
            "Value": "Value3",
            "Flag": "Flag3"
        }, {
            "Name": "Name4",
            "Value": "Value4",
            "Flag": "Flag4"
        }]
    },
    "LowerLevel": [{
        "Name": "Name1",
        "Value": "Value1",
        "Flag": "Flag1"
    }, {
        "Name": "Name2",
        "Value": "Value2",
        "Flag": "Flag2"
    }, {
        "Name": "Name3",
        "Value": "Value3",
        "Flag": "Flag3"
    }, {
        "Name": "Name4",
        "Value": "Value4",
        "Flag": "Flag4"
    }]
  }]
}    

这只是假的,但我认为你明白了。我现在只需要低层的每个项目的值和相关的名称。我想做的是,我认为用mapReduce例程的mapFunction解释得更好:

var mapFunction = function() {
    for (var i = 0; i < this.UpperLevel.length; i++) {
    emit(this.id, {
        name1: parseFloat(this.UpperLevel[i].LowerLevel[0].Value),
        name2: parseFloat(this.UpperLevel[i].LowerLevel[1].Value),
        name3: parseFloat(this.UpperLevel[i].LowerLevel[2].Value),
        name4: parseFloat(this.UpperLevel[i].LowerLevel[3].Value
        }));
    }
}

我的减少函数只是一个虚拟函数,因为我得到了我想要的。

var reduceFunction = function(key, values) {
    return Temp = {
    Data: values
    }
}

这适用于小型集合,但当我将其用于大型集合(30GiB)时,我得到ExceptionCode 16722和错误消息:

Exception: TypeError: Cannot read property 'Value'
of undefined
at _funcs1(_funcs1: 9: 77) near '.LowerLevel[3].Value);        
emit(key, value ' 

我知道这有时会发生当你的reduce函数的返回值不匹配你的map函数的值,但这不能是我的问题在这里,可以吗?

问题出在我们的解析器上。没有特定的mapreduce或mongodb

相关内容

  • 没有找到相关文章

最新更新