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

如何用Python将含日期字符串的JSON转为MongoDB的ISODate对象

将JSON日期字符串转换为MongoDB ISODate对象的几种方法

方法1:使用MongoDB扩展JSON格式(推荐)

MongoDB支持扩展JSON规范,直接修改原JSON的日期字段为{"$date": "日期字符串"}格式,就能被mongoimport识别为ISODate:

修改后的JSON:

[{"_id": "123", "lastSyncedAt": {"$date": "2021-03-10T15:46:51Z"}}]

(建议给日期加上Z表示UTC时区,避免时区歧义)

然后用mongoimport命令导入:

mongoimport --db your_db --collection your_coll --jsonArray --file modified.json

方法2:先导入字符串,再批量转换

如果已经把原JSON导入MongoDB(此时lastSyncedAt是字符串类型),可以用MongoDB Shell的聚合更新语法批量转成ISODate:

打开MongoDB Shell,执行:

db.your_coll.updateMany(
  {}, // 匹配所有文档
  [
    { $set: { lastSyncedAt: { $toDate: "$lastSyncedAt" } } }
  ]
)

这个方法不用修改原JSON文件,适合已完成导入的场景。

方法3:预处理JSON生成MongoDB Shell脚本

如果需要直接生成带ISODate()的脚本文件,可以用文本替换工具(比如Linux/macOS的sed)批量修改:

执行命令:

sed -E 's/"lastSyncedAt": "([^"]+)"/"lastSyncedAt": ISODate("\1")/' input.json > output.js

生成的output.js内容就是你期望的格式:

[{"_id": "123", "lastSyncedAt": ISODate("2021-03-10T15:46:51")}]

然后在MongoDB Shell中执行这个脚本:

mongo your_db < output.js

(注意:这种生成的不是标准JSON,只能通过MongoDB Shell执行,不能用mongoimport导入)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:01:11