$toDate(转日期)

最后更新:2026-10-09

$toDate(转日期)

$toDate 把值转换为日期(BSON Date)。支持日期直接透传、数字时间戳(毫秒)、ISO 8601 格式字符串。典型场景包括把日志里的时间字符串转为日期以便按天分组、把前端传来的毫秒时间戳标准化。非法字符串会报错,建议用 $convert onError 兜底。null 输入返回 null。与 $dateFromString 的区别是 $toDate 语法更简、自动识别 ISO 格式。

分类集合·条件·转换
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

{ $toDate: <表达式> }

⚙️ 参数

表达式日期、数字时间戳(毫秒)或 ISO 字符串。

返回值:Date 类型;输入为 null 时返回 null

▶ 示例

请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):

// $toDate:把时间字符串转成日期
db.logs.aggregate([
  { $project: {
      ts: { $toDate: '$timeStr' }
  } }
])

运行结果:

{ '_id': 1, 'ts': { '$date': '2026-09-25T08:00:00Z' } }

📌 注意事项

更多实战案例即将上线,敬请期待。

📚 相关教程

❓ 常见问题

Q能解析哪些字符串?
AISO 8601 格式,如 '2026-09-25T08:00:00Z'。
Q时间戳是秒级怎么处理?
A先 { $multiply: ['$ts', 1000] } 转成毫秒再转换。
Q和 $dateFromString 的区别?
A$toDate 自动识别 ISO 格式,$dateFromString 可自定义 format 和时区。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏