我正在尝试使用spring-data-mongo实现一个带有TopN聚合运算符的分组,但我不知道该如何实现。
我知道我想从MongoDB的POV中得到什么。大概是这样的
[ {
$match: {
field000: { $regex: ".*MATCHTHIS.*" },
created: { $lte: new Date("2030-05-25T00:00:00.000+00:00" ) }
},
},
{
$group: {
_id: "$field001",
field001s: {
$topN: {
output: ["$field002", "$created"],
sortBy: { created: -1, },
n: 1,
}
}
}
}]
对于已经由$match子句过滤的文档集,表示...; group by field 001,按照创建的desc对每个bucket进行排序,并选择顶部(1)。因此,每个组类别的最近创建的文档。
我发现将其翻译成spring-data-mongo有问题
1条答案
按热度按时间klh5stk11#
使用
MongoRepository
,您可以使用@Aggregate
注解指定管道。就像这样:注意,我已经参数化了搜索正则表达式和日期值。请相应地更新它,沿着函数的返回类型。