Я хочу использовать Mongoid для реализации 'GROUP BY' The Funcation запрос любит, но я поймал исключение: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. Как монгоид задал столбец created_at как первичный ключ?
Нет, это говорит вам, что вы пытаетесь проверить поле типа ObjectId с регулярным выражением, которое вы не можете сделать. Вместо этого используйте тип ObjectId. –
Спасибо, но я так не думаю, и я получил результат с 'Message.where (sr_flag: /.*# {self.id}. * /)', Поэтому я думаю, что это правильно. Даже я использую «Сообщение». map_reduce (map, reduce) .out (inline: true) .to_a ", есть и это исключение. – Devin