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

MongoDB Chart新增字段转换Unix时间戳为日期时出现年份异常问题

问题排查结论
  • 你使用的$date字段存储的本身就是毫秒级Unix时间戳:常规秒级Unix时间戳为10位数字,你给出的示例值1631023883000为13位,完全满足MongoDB $toDate 运算符的输入要求,无需额外做倍率转换。
  • 你当前表达式中额外执行了乘以1000的操作,将时间戳放大了1000倍,得到的数值远超出正常日期的取值范围,因此生成了年份异常的错误结果。
修复方案

适配全量13位毫秒级时间戳的场景

直接移除乘法运算即可,正确表达式如下:

{$toDate: '$date'}

兼容同时存在10位秒级、13位毫秒级时间戳的场景

可以增加条件判断自动适配两种格式:

{
  $toDate: {
    $cond: [
      {$gte: [{$strLenCP: {$toString: "$date"}}, 13]},
      "$date",
      {$multiply: ["$date", 1000]}
    ]
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:06:03