如何在MongoDB中无需降序排序直接获取数据内最新年份
MongoDB提取最新年份的高效实现方案
以下两种方案均不会返回全量年份数据,可直接得到唯一的最大年份值:
- 方案1:使用聚合框架的
$max算子(最推荐)
直接通过分组聚合取年份字段的最大值,MongoDB存在对应字段索引时会直接命中索引返回结果,无需扫描全表数据,示例代码如下:
查询结果会返回仅包含// 替换yourCollection为你的集合名,替换year为实际存储年份的字段名 db.yourCollection.aggregate([ { $group: { _id: null, latestYear: { $max: "$year" } } } ])latestYear字段的单条文档,值即为你需要的2018。 - 方案2:
find配合排序+限制返回条数
你提到的不想用降序排序的顾虑通常是担心返回全量数据,只要搭配limit(1),数据库会在拿到最大的单条结果后直接终止查询,并不会返回所有年份数据,示例代码如下:
该方案同样会返回仅包含年份值的单条结果。// 替换yourCollection为你的集合名,替换year为实际存储年份的字段名 db.yourCollection.find({}, { year: 1, _id: 0 }) .sort({ year: -1 }) .limit(1)
性能优化提示
请确保存储年份的字段已建立单列索引,两种方案均可命中索引实现毫秒级返回,无全表扫描开销。
内容的提问来源于stack exchange,提问作者margarita
相关产品推荐
相关产品推荐

