我刚刚开始学习MongoDB和mongoid。
我遇到的最大问题是理解map/reduce功能,以便能够进行一些非常基本的分组等操作。
比如说我有一个像这样的模型:
比如说我有一个像这样的模型:
class Person
include Mongoid::Document
field :age, type: Integer
field :name
field :sdate
end
该模型将生成这样的对象:
#<Person _id: 9xzy0, age: 22, name: "Lucas", sdate: "2013-10-07">
#<Person _id: 9xzy2, age: 32, name: "Paul", sdate: "2013-10-07">
#<Person _id: 9xzy3, age: 23, name: "Tom", sdate: "2013-10-08">
#<Person _id: 9xzy4, age: 11, name: "Joe", sdate: "2013-10-08">
有人能展示如何使用mongoid map reduce来获取按sdate字段分组的对象集合吗?并且如何获取共享相同sdate字段的对象年龄总和?
我知道这个:http://mongoid.org/en/mongoid/docs/querying.html#map_reduce 但是看到一个真实的例子会更有帮助。那段代码放在哪里,我猜是在模型中,需要一个作用域等。
我可以使用mongoid进行简单的搜索,获取数组,然后手动构建任何我需要的东西,但我想这里应该使用map reduce。我想这些在mongoid页面上提到的js函数被提供给内部执行这些操作的数据库。对于习惯了active record的我来说,这些新概念有点奇怪。
我使用Rails 4.0、Ruby 1.9.3、Mongoid 4.0.0、MongoDB 2.4.6在Heroku(mongolab)上,尽管我本地有2.0,我应该更新它。
谢谢。