如何有效地从集合中获取最新的元素并保留初始文档结构



我正试图在MongoDB中执行以下聚合(使用Kotlin(,在db中具有以下结构:

{
"_id" : 214134152323423
"orderId" : 1,
"createdAt" : 2000-01-01,
"details" : "some very important note"
}

现在,假设我可以有多个具有相同orderId但不同createdAt日期的文档,我希望获取最新的文档并保留初始文档结构。

现在我有:

mongoTemplate
.aggregate(
newAggregation(
sort(
Sort.Direction.DESC, "createdAt"
),
group("orderId")
.first("createdAt").`as`("createdAt")
.first("details").`as`("details")
),
"order-collection",
String::class.java
)
.mappedResults
.forEach { println(it) }

这种方法正确吗?是否可以在不对整个集合进行排序的情况下进行?

您需要使用按需物化视图

主要思想:定期/每次order-collection更新时,插入/刷新order-collection-view预先计算的数据。这样,您就可以获得最近的订单详细信息,而无需扫描整个order-collection

最新更新