MongoDB map/reduce 功能在 MongoId 版本 2+ 的 Mongoid Criteria 上不可用,我是否正确
谁能证实这一点我有一个标准
这是我的查询
class PerformerSource
scope :active_performers,where(:active => true).only([:performer_id, :sort_order,:stage_name, :photo, :large_photo, :status, :current_performance_type,:current_sign_in_at])
end
PerformerSource.active_performers.order_by([:sort_order,:desc])
我想对其应用 map/reduce 功能
像这样的东西
PerformerSource.active_performers.order_by([:sort_order,:desc]).map_reduce(PerformerSource.map,PerformerSource.reduce)
但是每当我这样做时,它都会返回错误
NoMethodError:未定义的方法“map_reduce”用于#
检查 map/reduce 是否可用
PerformerSource.active_performers.order_by([:sort_order,:desc]).respond_to?(:map_reduce)
=> false
PerformerSource.respond_to?(:map_reduce)
=> false
所以我相信我是正确的,因为我看到 Mongoid-3 在这里提供了在 Mongoid-criteria 中添加 map/reduce 的规定,但在 mongoid 2 中找不到相同的
我可以升级 mongoid(我希望可以),因为应用程序在 Ruby-1.8.7 上运行并且 mongoid 3 需要 ruby-1.9+
因此,如果地图/归约不能按照标准运行地图/归约,那么可以让我考虑如何运行地图/归约,然后考虑其他条件,即
active_performers.order_by([:sort_order,:desc])
注意:我只是为了清楚起见没有添加map和reduce功能