2012-08-30 5 views
14

MongoDBには新しいAggregation Frameworkがあり、Mongoidでどのように使用するかを考えようとしています。 hereで説明したように、この機能を備えたMopedの支店があるようです。私はMongoDBの2.2に更新され、このように私のアプリに原付のこのブランチをインストールしようとしました:Mongoidと集計

宝石「モペット」、gitの「gitの://github.com/mongoid/moped.git」、枝を: 'aggregation-support'

まだ集約は機能していません。これは私がそれをテストするために使用しています呼び出しです:

= Post.all.aggregate({ "$グループ" => { "_id" => "$の_id"}})

MongoのシェルでUPDATE

この作品:

db.users.aggregate({$基:{_id: "$の_id"}})

0を

だから私はそれがモンゴイドの問題だと思っています...これに関するどんな言葉も素晴らしいでしょう!

+1

をmongoidことがそれですモンゴイでは投稿集? ^^ –

+0

Post.collection.aggregate( "$ group" => {"_id" => "$ _id"})してみましたか? –

+0

@neonそのブランチを使用してmopedとmongoidで動作するように集約フレームワークを取得しましたが、解決策で質問を更新したいと思いますか? – brg

答えて

12

モンゴイドは、Mopedが公開している以外の構文を追加していません。あなたのGemfileにMoped(マスターに指さしている)を含めたいなら、Mopedの集約のサポートをテストすることができます。

gem 'moped', :git => 'git://github.com/mongoid/moped.git' 

あなたは、これはかつて1.3.0がリリースされて引っ張って、ちょうどgem update mopedの通常の経路を介して、更新することを忘れないようにしたいでしょう。代わりにそれと

、あなたがあなたのクエリを実行することができます。

Post.collection.aggregate({ "$group" => { "_id" => "$_id" } }) 

詳細については、原付changelogを参照してください。

+0

私はすでにモペットを含めずにこれを行うことができます。私はモンゴイド5.0.0 gemを使用しています。 – user1735921

27

3.0.1以降、MongoDBは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]) 
+0

最初の場所で集約フレームワークが欠けていたことは驚くべきことです。どのようにmysql/postgresql集約関数を模倣しますか? (修辞的な質問) – Donato

-2
db.items.aggregate(
{$match : {amount:{$gt:0},type:{$in:["Single","Double"]}}}, 
{$group:{_id:type:"$type", month:"$month", year:"$year"},Total_Price:{$sum:"$amount"}}, 
{$sort:{"_id.month": 1,"_id.year":1}}, 
{$limit:5} 
) 

Items.collection.aggregate(
{"$match"=>{:amount => {'$gt' => 0},:type=>{'$in'=>[Single","Double"]}}}, 
{"$group"=>{"_id" => {"type" => "$type", "month"=>"$month","year"=>"$year"},"Total_Price" => {"$sum"=>"$amount"}}}, 
{"$sort" => {"_id.month" => 1,"_id.year" => 1}}, 
{"$limit" => 5} 
) 

フォローリンクはMongoDBの中でクエリを記述するためのお手伝いをしてquery