2014-09-22 63 views
0

我想用mongoid來實現查詢funcation喜歡 'GROUP BY',但我捕獲的異常:Mongoid拋出16052例外

failed with error 16052: "exception: could not create cursor over th_test.messages for query : { sr_flag: /.*541260c5aee1a93f70000001.*/ } sort : { created_at: -1 }" 

我的代碼是在這裏:

def messages 
    map = %Q{ 
     function() { 
     emit(this.sr_flag, { count: 1 }); 
     } 
    } 

    reduce = %Q{ 
     function(key, values) { 
     var result = { count: 0 }; 
     values.forEach(function(value) { 
      result.count += value.count; 
     }); 
     return result; 
     } 
    } 

    result = Message.where(sr_flag: /.*#{self.id}.*/).map_reduce(map, reduce).out(inline: true).to_a 
    result 
end 

人幫我解釋一下爲什麼?我搜索了blog。mongoid是否將created_at列設置爲主鍵?

+0

不,它告訴你,你正在試圖用一個正則表達式來檢查一個ObjectId類型字段,這是你不能做的。改爲使用ObjectId類型作爲值。 – 2014-09-22 03:26:28

+0

謝謝,但我不這麼認爲,我得到'Message.where(sr_flag:/.*# {self.id}。* /')的結果,所以我認爲它是正確的。即使我使用「消息」。 map_reduce(map,reduce).out(inline:true).to_a「,這個例外。 – Devin 2014-09-22 03:39:38

回答