Rails で mongoid mapreduce を使用する場合、map と reduce 関数を文字列で渡します。例えば
def group
Order.collection.map_reduce(map, reduce, :out => 'output_collection')
end
def map
"function()
{
var key = {game_id: this.game_id, year: this.date.getFullYear()};
emit(key, {count: 1, score: this.score});
}"
end
def reduce
"function()
{
var result = {sum: 0, total_score: 0, average: 0};
values.forEach(function(value)
{
result.sum += value.count;
result.total_score += value.score;
});
}"
end
マップをテストし、レールで機能を減らすことは可能ですか? 簡単な例です。しかし、私のプロジェクトの機能はより複雑で、保守が難しいと感じています。
アドバイスをいただきありがとうございます。