2017-05-24 47 views
0

我在MongoDB中的时间戳有问题。TypeError:datetime.datetime()不是JSON可序列化

因此,这里的情况:

我在JSON的读取,并添加时间戳对他们说:

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

将导致DB这样的:

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

后,我看了它然后从数据库,并尝试写入另一个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))) 

回答

1

没有必要通过JSON表示为了将文档保存到MongoDB的。只要做到:

tableB.insert_one(docFromTableA) 

MongoDB的原生数据格式 JSON,它是BSON,与更多类型比JSON二元结构。 PyMongo自动地在BSON和Python字典之间转换MongoDB文档。

+0

谢谢,欢呼! –