2016-07-12 10 views
4

をグループ化するネストされた:私は(各グループ内)、その後、月/年でグループに自分のデータを順番にクエリを記述しようとしているRethinkDB私は文書がこのような何かを見RethinkDBテーブル持って

[ 
    { "date": Mon Oct 05 2015 19:30:00 GMT+01:00, "category": 1, "name": "Alice" }, 
    { "date": Wed Oct 07 2015 14:00:00 GMT+01:00, "category": 2, "name": "Ben" }, 
    { "date": Mon Nov 16 2015 12:30:00 GMT+01:00, "category": 1, "name": "Charles" }, 
    { "date": Sun Nov 01 2015 22:15:00 GMT+01:00, "category": 1, "name": "Donald" } 
    (...) 
] 

をサブグループに対して何らかの集約を実行します。

ReQLドキュメント(https://www.rethinkdb.com/api/javascript/group/)で与えられた例に基づいて、これが最初のステップ与える:私はここにこだわっている

r.table("seances").group([r.row("date").month(), r.row("date").year()]) 

を。 group(r.row("category"))でチェインすると、エラーメッセージが表示されます(groupの出力にgroupを呼び出すことはできません)。 2番目のgroupの前にungroupを呼び出すこともできません。

どうすればいいですか? (ReQLは非常に強力ですが、ロダッシュに慣れているものとはかなり違います...)。

答えて

3

sequence.group(FIRST_GROUPING).ungroup().merge(function(row) { return {reduction: row('reduction').group(SECOND_GROUPING).ungroup()}; })と書くことができます。

+0

ありがとうございます!私はこれが正確に何をするか把握しなければならないでしょうが、あなたは私を正しい軌道に乗せました。しかし、ただ一つのコメント:SECOND_GROUPINGで 'r.row()'を使用すると、 "ネストされたクエリでrow()を使用できません"というエラーメッセージが表示されます。単一のフィールド名(例: "category")の文字列を使用すると、ドキュメントの1つのレベルよりも深いフィールドでグループ化する必要がある場合はどうなりますか? –

+1

'.group(r.row( 'a')( 'b'))の代わりに' .group(function(行){戻り行( 'a')( 'b');}) 。 – mlucy