0

HOUR_COUNTS コレクションには {docId, hour, count} が含まれています

次の mongodb クエリを使用して、docId のカウントの合計を取得するのは非常に簡単です。

db.HOUR_COUNTS.aggregate(
    [
        {
            $match: { hour: { $gte: 10 } }
        },
        {
            $group: { _id: "$docId", total: { $sum: "$count" } }
        },
        { 
            $sort: { total: -1, _id: -1 }
        },
        {
            $limit: 20
        }
    ]
)

次に、次の結果を得ることができます。

{ "_id" : 6831, "total" : 6 }
{ "_id" : 6830, "total" : 6 }
{ "_id" : 6849, "total" : 4 }
{ "_id" : 6848, "total" : 4 }
{ "_id" : 6847, "total" : 3 }

Spring Dataを使用してそれを行う時が来ました

私はこれをやろうとしましたが、うまくいきません:

    Aggregation agg = newAggregation(
            match(where("hour").gte(0)),
            project("docId"),
            group("docId").sum("count").as("total"), 
            project("total").and("docId").previousOperation(), 
            sort(Sort.Direction.DESC, "total", "docId"),
            limit(20)
        );

エラーは次のとおりです。

java.lang.IllegalArgumentException: Invalid reference 'count'!

したがって、Spring Data でクエリを機能させる方法を知りたいです。ありがとうございました。

4

1 に答える 1