我遇到有关MongoDB中时间戳的问题。
所以情况就是这样:
我在json中读到并为它们添加时间戳:
my_json['insertTime'] = datetime.datetime.now()
mongodb.collection.insert_one(my_json)
将导致DB像:
"insertTime" : ISODate("2017-05-24T12:39:34.844Z")
我从DB读取之后尝试将同一文档写入另一个mongoDB表中,我收到以下错误:
TypeError: datetime.datetime(2017, 5, 24, 12, 39, 46, 671000) is not JSON serializable
我已经阅读了将日期时间转换为字符串值的解决方案,但我希望它与第一个表中的ISODate格式一样。
从表A中获取时间后的时间戳是这样的:
'insertTime': datetime.datetime(2017, 5, 24, 12, 39, 46, 671000)
如何以相同的格式(ISODate)将其插入第二个表?
PS:我将数据加载到表B的方式如下:
tableB.insert_one(json.loads(json.dumps(docFromTableA)))
答案 0 :(得分:2)
没有必要通过JSON表示来将文档保存到MongoDB。只是做:
tableB.insert_one(docFromTableA)
MongoDB的本机数据格式是而不是 JSON,它是BSON,是一种二进制结构,具有比JSON更多的类型。 PyMongo自动在BSON和Python dicts之间转换MongoDB文档。