neo*_*eon 17 ruby-on-rails mongodb mongoid aggregation-framework
MongoDB有一个新的聚合框架,我试图弄清楚如何将它与Mongoid一起使用.似乎有一个Moped分支具有此处讨论的此功能.我已经更新到MongoDB 2.2并尝试在我的应用程序上安装这个Moped分支,如下所示:
gem'pedped',git:'git://github.com/mongoid/moped.git',branch:'aggregation-support'
但聚合仍然无效.这是我用来测试它的电话:
= Post.all.aggregate({"$ group"=> {"_ id"=>"$ _id"}})
UPDATE
在mongo shell中,这可以工作:
db.users.aggregate({$ group:{_ id:"$ _id"}})
所以我认为这是一个Mongoid问题......任何关于这个的话都会很棒!
yac*_*acc 31
从3.0.1开始,Mongoid需要MongoDB 2.2并支持新的聚合框架.
您现在可以调用aggregate集合:
project = {"$project" =>
{
"charges" => 1,
"year" => { "$year" => "$created"}, "month" => { "$month" => "$created"},
"week" => { "$week" => "$created"}, "day" => { "$dayOfYear" => "$created"}
}
}
group = { "$group" =>
{ "_id" => {"year"=>"$year", "week"=>"$week"}, "count" => { "$sum" => 1 } }
}
Charge.collection.aggregate([project,group])
Run Code Online (Sandbox Code Playgroud)
mga*_*dda 12
此时,mongoid没有提供超出Moped曝光的其他语法.如果您愿意在您的Gemfile中包含Moped(指向master),您可以测试Moped对聚合的支持.
gem 'moped', :git => 'git://github.com/mongoid/moped.git'
Run Code Online (Sandbox Code Playgroud)
一旦1.3.0发布,你会想要记住拉动它,只需通过正常路线更新gem update moped.
有了这个,您可以运行您的查询:
Post.collection.aggregate({ "$group" => { "_id" => "$_id" } })
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅Moped 更改日志.