私はこのようなmongodbコレクションを持っています
{"assigneeId" => 1000, "status" => 3, "starttime" => "2014 Feb 25", "numofdays => 6} {"assigneeId" => 1000, "status" => 2, "starttime" => "2014 年 1 月 10 日", "numofdays => 6} {"assigneeId" => 1000, "status" => 3, "starttime" => "2014 年 1 月 1 日", "numofdays => 20}
上記のコレクションをステータスが 3 の assigneeId でグループ化し、このように numofdays の値を追加する MongoDB クエリを作成しました。
db.events.group ( { key: {assigneeId:1}, cond: {status: {$gte: 3}}, reduce: function (curr, result) {result.total++; result.numofdays += curr.numofdays; }、初期: {total:0, numofdays:0} })
これにより、Mongodb cli から期待どおりの出力が得られます。
同じクエリを実行するための ruby コードを書いたところ、うまく動作しませんでした。同様の問題に対して多くの異なるヒットが発生していますが、どのフォーマットも機能していないようです。グループ化関数の ruby の構文エラーを回避できませんでした。私はモンゴイドを使用していないことに注意してください。集約フレームワークでこの作業を行うことができれば、それも問題ありません。
これは私が書いた Ruby クエリと同じエラーです。
@events_h.group (
:cond => {:status => { '$in' => ['3']}},
:key => 'assigneeId',
:initial => {count:0},
:reduce => "function(x, y) {y.count += x.count;}"
)
私が得ているエラー
analyze.rb:43: 構文エラー、予期しない ','、予期しない ')' out = @events_h.group (["assigneeId"], { }, { }, "function() { }") ^ analyze.rb: 43: 構文エラー、予期しない ')'、keyword_end が必要ですanalyze.rb:83: 構文エラー、予期しない入力の終わり、keyword_end が必要です
どんな助けでも大歓迎です。
ありがとう