2017-05-24 13 views
0

MongoDBのタイムスタンプに関する問題があります。私はJSON年代に読み、それらにタイムスタンプを追加TypeError:datetime.datetime()が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 

datetimeを文字列値に変換するソリューションを読んでいますが、最初のテーブルのようにISODate形式にしたいと思います。

タイムスタンプは、テーブルAからそれを取得した後のように見える方法は次のとおりです。

'insertTime': datetime.datetime(2017, 5, 24, 12, 39, 46, 671000) 

私は同じフォーマット(ISODate)を有する第2のテーブルに挿入するために何をすべき?

PS:私は、テーブルBにデータをロードする方法は以下の通りです:

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

答えて

1

のMongoDBに文書を保存するために、JSON表現を通過する必要はありません。ただ、やる:

tableB.insert_one(docFromTableA) 

のMongoDBのネイティブデータフォーマットがない JSON、それはBSON、JSONよりも多くの種類のバイナリ構造です。 PyMongoはMongoDB文書をBSONとPythonのdictsの間で自動的に変換します。

+0

ありがとう、歓声! –

関連する問題