2012-06-18 2 views
2

У меня есть база данных mongo, где я храню дату и время в отдельных полях (у меня нет возможности изменить эту настройку). Погуглить вокруг, я нашел примеры людей, запрашивая даты и времени, разбивая поля вверх в 2-х частей, 1 на дату и 1 для времени, как:Запрос в пределах временного диапазона в mongo

{"dateField": {"d": "06/18/2012" "t": "12:00:00 AM"}} 
{"timeField": {"d": "06/18/2012" "t": "12:07:10 PM"}} 

Я видел людей (и был в состоянии себе) запросить часть даты:

db.collection.find({"dateField.d": {"$gte": "06/18/2012"}}) 

Моя проблема в том, что я не могу получить точные результаты, пытаясь то же самое со временем:

db.collection.find({"timeField.t": {"$gte": "12:00:00 PM"}}) 

есть ли конкретный способ, которым я должен быть форматированием мои данные времени, чтобы запросить его ? Или есть лучший способ хранения временных данных, чтобы я мог запросить только время (без зависимости от даты)?

ответ

2

Вам необходимо сохранить данные в реальном формате даты или в виде цифр. Когда вы делаете эти поиски, сравнение использует lexicography заказ, который не тот, который вы хотите. Если вы хотите использовать строки, вы должны использовать один из ISO formats, где он работает.

+0

Это звучит как плохой способ [хранить даты как строки]. – monksy

+0

Спасибо, конвертируется в форматы ISO. @monksy Хотя я предпочитаю хранить даты и время как объекты, проблема в том, что с информацией о дате и времени, хранящейся в отдельных полях, мне нужно что-то, что только время и время. К сожалению, в каждом представлении объектов я мог найти комбинированное время с датой (которая может или не может быть правильной датой с течением времени, и данные будут изменены). –

Смежные вопросы