1

私はDbデータをフォローする必要があります:

{user : Tom, CORRECT: {q1, q3}, WRONG : {q2, q4} },
{user : jim, CORRECT: {q1}, WRONG : {q2, q3, q4} },
{user : Tom, CORRECT: {q6}, WRONG : {7} },

集計を使用して、ユーザーごとに各 CORRECT\WRONG の数を取得したいと思います。

{user : Tom, correctCount : 3, wrongCount : 3},
{user : jim, correctCount : 1, wrongCount : 3},

私が試したのはこれです:

    Aggregation agg = newAggregation(
            group("name").
                    addToSet(correct).as(correct).
                    addToSet(wrong).as(wrong).
                    addToSet(partial).as(partial)
    );

しかし、ユーザーごとにデータの完全なリスト (つまり、q1、q2、q3...) を取得し、いつでもそのリストに対して size() を実行できますが、非効率的です。代わりにカウント値を取得するにはどうすればよいですか?

ありがとう

4

1 に答える 1