2012-07-31 26 views
0

今天我的地圖函數開始報告斷言失敗13076'遞歸toObject'代碼。它昨天工作得很好。'遞歸toObject'13076斷言在MongoDB中失敗

這是我的地圖功能:

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循環功能,但結果是一樣的。

什麼是範圍變量限制地圖功能單EMIT有趣的功能,工作得很好:

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時出錯。

回答

0

好的,所以錯誤信息是非常含糊的,但問題似乎是由'值'數組中'id'字段的重複值造成的。當我改變其中一個數組元素的id時,函數又開始工作。