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

MongoDB时间序列库insertOne插入报错:‘t’需有效BSON UTC时间

解决MongoDB API插入时间序列数据的时间戳格式问题

核心问题解析

MongoDB时间序列集合强制要求时间字段(默认字段名为t)必须是BSON UTC datetime类型。你看到的{"T": 1565545664, "I": 1}是MongoDB API对BSON datetime的专属JSON序列化格式——其中T对应UTC时间戳的秒数,I对应纳秒部分(可选,范围0-999999999),普通的ISO字符串或数字时间戳无法被API识别为合法的BSON datetime类型,这就是报错的原因。

正确请求体示例

直接按照API要求的格式构造时间字段即可,以下是完整的insertOne请求体模板:

{
  "collection": "你的时序集合名",
  "database": "你的数据库名",
  "document": {
    "t": { "T": 1718000000, "I": 500000000 }, // T为UTC时间戳秒数,I为纳秒部分
    "temperature": 26.3,
    "device_id": "sensor_001"
  }
}

关键注意事项

  • 若你手里的时间是ISO 8601格式字符串(比如"2024-06-10T14:30:00Z"),需要先转换为UTC时间戳秒数,毫秒/纳秒部分拆分到I字段即可。
  • 如果创建时序集合时指定了自定义时间字段(比如timestamp),请把请求体里的t替换为对应的字段名。
  • 不要使用MongoDB Shell专属的ISODate()或new Date()语法,这些语法无法在JSON请求体中生效。

快速验证方法

可以先通过MongoDB Atlas UI手动插入一条时序数据,再调用API的findOne接口查询该数据,返回结果中的时间字段格式就是你需要严格遵循的模板,直接参考构造即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:45:11