我正在尝试带回用于描述博客文章的年份/月份组合列表。我们的想法是它们将像这样显示:
- 2010 年 1 月(1 个帖子)
 - 2009 年 12 月(2 个职位)
 - ...
 
我已经设法使用 MongoDB JS shell 让它工作,它以一种有用的格式返回结果:
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
}
似乎它要么完全违背了它自己的文档(以及我对源代码的理解!),要么我在这里遗漏了一些基本的东西。我几乎把头发拔了,任何帮助都感激地接受。