Запрос Pymongo по ключу datetime возвращает оператор запроса mongo и огромный int

Я пишу этот запрос;

end = dt.datetime.today()
start = end - dt.timedelta(7)

query = collection.find({'date' : {'$gt': start, '$lt' : end}},
                       {'_id' : 1, 'name' : 1, 'date_created' : 1})
docs = json.loads(dumps(query))

Я запрашиваю с помощью pymongo объект datetime и конвертирую байты в json с помощью bson. То, что я получаю, — это документ, который вместо объекта datetime выглядит так:

{'_id' : 0, 'name' : 'Brand CN Homepage (Desktop)', 'date' : {'$date' : 1590537600000}}

Когда я пытаюсь преобразовать это огромное целое число, я получаю;

OverflowError: Python int too large to convert to C long

ключ даты, значение должно выглядеть так;

{'date' : datetime.datetime(2020, 4, 3, 0, 0)}

Есть ли способ вернуть объект даты и времени, а не массивное целое число?


person unltd_J    schedule 01.06.2020    source источник


Ответы (1)


'дата': {'$дата': 1590537600000}

Это расширенное представление временной метки в формате json, задокументированное здесь. Чтобы загрузить расширенный json, используйте json_util вместо стандартной библиотеки. json модуль.

person D. SM    schedule 01.06.2020