MongoDB Group с использованием драйвера Ruby

Я пытаюсь вернуть список комбинаций год / месяц с подсчетом для описания сообщений в блоге. Идея в том, что они будут отображаться так:

Январь 2010 (1 сообщение)Декабрь 2009 (2 сообщения)...

Мне удалось заставить это работать, используя оболочку MongoDB JS, и она возвращает результаты в полезном формате:

db.posts.group({ 
    keyf: function(x){ 
                      return { 
                              month: x.datetime.getMonth(), 
                              year:x.datetime.getFullYear() 
                      }; 
    }, 
    reduce: function(x,y){ y.count++ }, 
    initial:{count:0} 
})

Результаты:

[ { "month" : 0, "year" : 2010, "count" : 3 },
  { "month" : 0, "year" : 1970, "count" : 1 } ]

Это здорово, именно то, что я после. Однако, пытаясь преобразовать это в код, подходящий для драйвера ruby, я не могу заставить его работать. Я посмотрел на документацию и, насколько я понимаю, следующее должно дать те же результаты (я использую MongoMapper, следовательно,Post.collection):

@archive = Post.collection.group(
  "function(x) { return { month: x.datetime.getMonth(), year:x.datetime.getFullYear() }; }",
  nil, { :count => 0 }, 'function(x,y){y.count++}', true)

Вместо того, чтобы возвращать хороший массив полезных данных, я получаю этот беспорядок:

{
  "function(x) { return { month: x.datetime.getMonth(), year:x.datetime.getFullYear() }; }" => nil, 
  "count" => 4.0
}

Кажется, что либо он полностью игнорирует свою собственную документацию (и мое понимание исходного кода!), Либо я здесь упускаю что-то фундаментальное. Я почти выдергиваю волосы, любая помощь с благодарностью принята.

Ответы на вопрос(1)

Ваш ответ на вопрос