2017-05-24 83 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

謝謝,歡呼! –