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 でクエリを機能させる方法を知りたいです。ありがとうございました。