You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MongoDB中实现按指定年份查询记录 等效SQL年份筛选操作

MongoDB按年份查询等效实现方案

以下实现对应你给出的SQL语句效果,根据date字段的存储类型分为两种场景:

场景1:date字段为MongoDB标准ISO日期类型(推荐存储方式)

优先选择范围查询方案,性能更高且支持命中索引:

  • 原生Mongo Shell查询写法:
// 替换yourCollectionName为实际业务集合名
db.yourCollectionName.find({
  date: {
    $gte: ISODate('2021-01-01T00:00:00.000Z'),
    $lt: ISODate('2022-01-01T00:00:00.000Z')
  }
})
  • 后端对接前端表单参数的代码示例(以Node.js驱动为例):
// 接收HTML表单提交的年份参数
const queryYear = Number(req.query.year);
const yearStart = new Date(queryYear, 0, 1);
const yearEnd = new Date(queryYear + 1, 0, 1);
// 执行查询
const result = await db.yourCollectionName.find({
  date: { $gte: yearStart, $lt: yearEnd }
}).toArray();

如果是小数据集不需要走索引,也可以用聚合运算符直接提取年份匹配:

db.yourCollectionName.find({
  $expr: { $eq: [{ $year: "$date" }, 2021] }
})

范围查询方式可以充分利用date字段上的索引,查询性能远高于提取年份的聚合查询,适合生产环境使用

场景2:date字段存储为YYYY-MM-DD格式字符串

用前缀匹配即可实现需求:

db.yourCollectionName.find({
  date: { $gte: "2021", $lt: "2022" }
})

内容的提问来源于stack exchange,提问作者Avery Lim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:27:06