我刚刚开始使用 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 函数被提供给在内部进行这些操作的数据库。来自主动记录的这些新概念有点奇怪。
我在 Heroku(mongolab)上使用 Rails 4.0、Ruby 1.9.3、Mongoid 4.0.0、MongoDB 2.4.6,尽管我有本地 2.0 应该更新。
谢谢。