【发布时间】:2013-10-10 11:25:13
【问题描述】:
我刚刚开始使用 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 需要更新。
谢谢。
【问题讨论】:
-
谢谢。我应该更多地关注 mongodb 文档而不是 mongoid。在您添加的 mongodb 页面中进行了更好的说明。
标签: ruby-on-rails mongodb mongoid