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 上工作。谢谢你。