Ошибка типа: datetime.datetime() не поддерживает сериализацию в формате JSON
У меня проблема с отметками времени в MongoDB.
Итак, вот случай:
Я прочитал в JSON и добавить к ним метку времени:
my_json['insertTime'] = datetime.datetime.now()
mongodb.collection.insert_one(my_json)
приведет к БД, как это:
"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 ответ
Для сохранения документа в MongoDB нет необходимости проходить через представление JSON. Просто делать:
tableB.insert_one(docFromTableA)
Родной формат данных MongoDB - это не JSON, это BSON, двоичная структура с гораздо большим количеством типов, чем JSON. PyMongo автоматически конвертирует документы MongoDB между BSON и Python.