【发布时间】:2020-08-10 13:18:43
【问题描述】:
我是 WebFlux 和 MongoDB 的新手。我正在尝试在带有可尾光标的上限集合中使用聚合,但我没有成功。 我想执行这个 mongoDB 查询:
db.structures.aggregate(
[
{
$match: {
id: { $in: [8244, 8052]}
}
},
{ $sort: { id: 1, lastUpdate: 1} },
{
$group:
{
_id: {id: "$id"},
lastUpdate: { $last: "$lastUpdate" }
}
}
]
)
ReactiveMongoOperations 让我可以选择“tail”或“aggregation”。
我能够执行聚合:
MatchOperation match = new MatchOperation(Criteria.where("id").in(8244, 8052));
GroupOperation group = Aggregation.group("id", "$id").last("$lastUpdate").as("lastUpdate");
Aggregation aggregate = Aggregation.newAggregation(match, group);
Flux<Structure> result = mongoOperation.aggregate(aggregate,
"structures", Structure.class);
或尾光标
Query query = new Query();
query.addCriteria(Criteria.where("id").in(8244, 8052));
Flux<Structure> result = mongoOperation.tail(query, Structure.class);
有可能吗?尾部和聚合在一起?
使用聚合是我发现只为每个 id 获取最后插入的文档的方式。
没有聚合我得到:
有聚合:
提前通知
【问题讨论】:
标签: mongodb aggregation-framework spring-webflux capped-collections