Ще вземе ли MongoDB обект за дата и час с липсващи полета?

В момента имам обект за дата и час, но той не съдържа всички полета. Липсват минути, секунди и микросекунди. Искам да използвам това за извличане на данни от MongoDB през Python. Просто се чудя дали pymongo автоматично ще попълни липсващите полета и ще го преобразува в ISODATE, или ще произведе грешка?

РЕДАКТИРАНЕ: пример:

time1='2015-12-17 23'
#assuming already imported all necessary libs
time2=datetime.strptime(time1, '%Y-%m-%d %H')
#for mongo
sq = {'$and': [something.some, {'field1':{'ne':1}}]}
sq['$and'].append({'field2': {'$gt': time2}})

person JChao    schedule 18.12.2015    source източник
comment
Трябва да публикувате няколко примера за това, което вече сте опитвали. От моя опит, ако имате само например: 2015-12-17 c# например ще запълни обекта Datetime с водещи нули: 2015-12-17 00:00:00. Най-доброто ми предположение е, че ще се преобразува в това и след това в ISODATE.   -  person jpgrassi    schedule 18.12.2015
comment
@jpgrassi редактира публикацията ми. Моля те, провери. Тъй като Mongo изброява всичко в ISODATE, не знам дали липсват минутите и това ще причини някакъв проблем.   -  person JChao    schedule 18.12.2015
comment
Не знам python, за да ти помогна... но това "H" там ми звучи като проблем. Откъде намирате датата в този формат? И най-важното, наистина ли се опитахте да вмъкнете това в Mongo? Ако се притеснявате дали ще проработи или не, по-добрият начин да разберете е да го направите!   -  person jpgrassi    schedule 18.12.2015
comment
този времеви низ е от потребителски вход. Може би трябва да опитам да добавя някои 0 за минути и секунди, след което да конвертирам в обект за дата и час   -  person JChao    schedule 18.12.2015
comment
Вероятно това бих направил. И си представям, че ако подадете само частта за дата (2015-12-14) към обект Datetime, той ще направи това вместо вас (попълнете с нули)   -  person jpgrassi    schedule 18.12.2015


Отговори (1)


В Python няма такова нещо като обект за дата и час с липсващи полета. Всички полета за дата и час (релевантни за този въпрос) винаги имат стойности.

Начинът, по който създадохте time2, полетата, които не сте посочили, получават стойност 0, както е показано тук:

% time2
=> datetime.datetime(2015, 12, 17, 23, 0)
% time2.minute, time2.second, time2.microsecond
=> (0, 0, 0)
time2 == datetime(2015, 12, 17, 23, 0,0,0)
=> True

Както беше показано по-горе, вашият time2 обект е идентичен с обекта, който бихте получили, ако ръчно попълвахте стойностите с нули.

Сега, когато виждате, че вашият обект за дата и час не липсва нищо, трябва да е ясно как mongodb го третира.

person shx2    schedule 19.12.2015