'递归到对象'13076断言在MongoDB中失败

'recursive toObject' 13076 assertion failed in MongoDB

本文关键字:MongoDB 失败 对象 递归 13076 断言      更新时间:2024-06-25

今天,我的映射函数开始报告断言失败13076"递归toObject"代码。昨天一切都很好。

这是我的地图功能:

function () {
    for(i=0; i<this.values.length; i++) {
        emit(this.values[i].id, {
            'id': this.values[i].id,
            'start_date': this.values[i].start_date,
            'end_date': this.values[i].end_date,
            'hash': this.values[i].hash,
            'url': this.values[i].url});
    }  
}

我试着用forEach函数替换for循环,但结果是一样的。

有什么有趣的函数,范围可变,将映射函数限制为单次发射,效果很好:

function () {
    for(i=0; i<this.values.length; i++) {
        if(this.values[i].id == myId) {
            emit(this.values[i].id, {
                'id': this.values[i].id,
                'start_date': this.values[i].start_date,
                'end_date': this.values[i].end_date,
                'hash': this.values[i].hash,
                'url': this.values[i].url});
        }
    }
}

当然,我可以直接在代码中执行这个映射,但我不想在其他真正需要使用MapReduce的时候遇到这个错误。

好的,所以错误消息确实很模糊,但问题似乎是由'values'数组中'id'字段的重复值引起的。当我更改其中一个数组元素中的id时,函数又开始工作了。