#mongodb #pymongo
#mongodb #pymongo
Вопрос:
У меня есть эта функция, которая анализирует даты в моей базе данных
def parserQuestions():
res=db.questionsActual.find({'date_created':{'$type':'string'}})
for doc in res:
db.questionsActual.update_one({'_id': doc.get('_id')}, {'$set': { 'date_created': parse(doc.get('date_created'))}})
Мой формат ввода:
2020-12-11T13:23:58.677-04:00
но когда я применяю функцию, результат:
2020-12-11T13:23:58.677.000Z
Как я могу сохранить часовой пояс? или, что еще лучше, могу ли я установить свой собственный часовой пояс?
желаемый результат:
2020-12-11T13:23:58.677-04:00
Ответ №1:
date
Тип BSON в MongoDB всегда сохраняет даты как дату / время UTC, поэтому вы не можете сохранить смещение непосредственно в date
поле BSON. Вы можете сохранить свое смещение в отдельном поле с чем-то вроде:
from pymongo import MongoClient
from dateutil import parser
db = MongoClient()['mydatabase']
dt = parser.parse('2020-12-11T13:23:58.677-04:00')
db.questionsActual.insert_one({'date': dt, 'offsetSeconds': dt.tzinfo.utcoffset(dt).total_seconds()})
print(db.questionsActual.find_one({}, {'_id': 0}))
выдает:
{'date': datetime.datetime(2020, 12, 11, 17, 23, 58, 677000), 'offsetSeconds': -14400.0}