Будет ли MongoDB принимать объект datetime с отсутствующими полями?

Сейчас у меня есть объект datetime, но он не содержит всех полей. Не хватает минут, секунд и микросекунд. Я хочу использовать это для получения данных из 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 для минут и секунд, а затем преобразовать в объект datetime   -  person JChao    schedule 18.12.2015
comment
Это то, что я, вероятно, сделал бы. И я предполагаю, что если вы передадите только часть даты (2015-12-14) объекту Datetime, он сделает это за вас (заполнит нулями)   -  person jpgrassi    schedule 18.12.2015


Ответы (1)


В python нет такой вещи, как объект datetime с отсутствующими полями. Все поля даты и времени (относящиеся к этому вопросу) всегда имеют значения.

При создании 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 идентичен объекту, который вы получили бы, если бы вручную заполнили значения нулями.

Теперь, когда вы видите, что ваш объект datetime ничего не упускает, должно быть ясно, как mongodb его обрабатывает.

person shx2    schedule 19.12.2015