2011-09-08 11 views
5

私はMongoidで私のグループ化の条件を提供したいのですが、条件ハッシュの属性に対して複数の値を送るにはどうすればいいですか?これは私が何をしたいです:どちらかpage_idとそこでMongoid `group()`条件

PageViews.collection.group(
    cond: {page_id: ['4e6912618083ab383e000010', '4e6912618083ab383e000009']}, 
    key: 'timestamp', 
    initial: {count: 0}, 
    reduce: "function(x, y) {y.count += x.count;}" 
) 

任意のPageView離れクエリのだろうが、私はすべてで動作するように条件のハッシュ(cond)を取得するように見えることはできません!私はここで間違って何をしています、私は本当に混乱しています。ここで

group()メソッドのAPIドキュメントです:http://api.mongodb.org/ruby/current/Mongo/Collection.html#group-instance_method

任意の助けいただければ幸いです。

PageViews.collection.group(
    cond: {page_id: { $in : ['4e6912618083ab383e000010', '4e6912618083ab383e000009']}}, 
    key: 'timestamp', 
    initial: {count: 0}, 
    reduce: "function(x, y) {y.count += x.count;}" 
) 

は、次のエラーを返しますが、構文は、私には罰金になります:


更新

のようなクエリを実行すると、

SyntaxError: (irb):170: syntax error, unexpected ':', expecting tASSOC 
    cond: {page_id: { $in : ['4e6912618083ab383e000010',... 
         ^
(irb):170: syntax error, unexpected '}', expecting $end 
...', '4e6912618083ab383e000009']}}, 
...        ^
    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.1.0/lib/rails/commands/console.rb:45:in `start' 
    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.1.0/lib/rails/commands/console.rb:8:in `start' 
    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.1.0/lib/rails/commands.rb:40:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 

それはそのイライラこの例はどこにもありませんが、ドキュメントではt彼は、条件パラメータのようなである:それはStringまたはBSON::Codeがかかる場合

(String, BSON::Code) :cond — default: {} — A document specifying a query for filtering the documents over which the aggregation is run (optional).

だから、何これは次のようになりますか?

答えて

4

クエリを複数の値と照合するには、$inを使用する必要があります。だから、あなたがここでそれについての詳細を読むことができます

PageViews.collection.group(
    :cond => {:page_id => { '$in' => ['4e6912618083ab383e000010', '4e6912618083ab383e000009']}}, 
    :key => 'timestamp', 
    :initial => {count: 0}, 
    :reduce => "function(x, y) {y.count += x.count;}" 
)  

のように書かれます:構文エラー、予期しない「}」、:158: `(IRB):http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in

+0

うーん、私は構文エラーを与えているようです$ end expect $ end ... '、' 4e6912618083ab383e000009 ']}}、...' –

+0

'page_id:'と '$ in'の間にかっこを入れましたか? – Russell

+0

ご協力いただきありがとうございます。 –