TypeError: datetime.datetime() is not JSON serializable

TypeError: datetime.datetime() is not JSON serializable

我对 MongoDB 中的时间戳有疑问。

情况是这样的:

我阅读了 json 并为它们添加了时间戳:

my_json['insertTime'] = datetime.datetime.now()
mongodb.collection.insert_one(my_json)

会产生这样的数据库:

"insertTime" : ISODate("2017-05-24T12:39:34.844Z")

在我从数据库读取它并尝试将同一个文档写入另一个 mongoDB table 之后,我收到以下错误:

TypeError: datetime.datetime(2017, 5, 24, 12, 39, 46, 671000) is not JSON serializable

我已经阅读了将日期时间转换为字符串值的解决方案,但我希望它像第一个那样采用 ISODate 格式 table。

这就是从 table A:

获取时间戳后的样子
'insertTime': datetime.datetime(2017, 5, 24, 12, 39, 46, 671000)

我应该怎么做才能将它以相同的格式(ISODate)插入第二个 table?

PS:我将数据加载到 table B 的方式如下:

tableB.insert_one(json.loads(json.dumps(docFromTableA)))

无需通过 JSON 表示即可将文档保存到 MongoDB。只是做:

tableB.insert_one(docFromTableA)

MongoDB的原生数据格式是不是JSON,是BSON,一种比JSON类型多很多的二进制结构. PyMongo 自动在 BSON 和 Python 字典之间转换 MongoDB 文档。