2015-04-28 3 views
0

Я пытаюсь отфильтровать все объекты, созданные в определенном диапазоне дат, а также определенный временной диапазон. Например: Рассмотрим следующий сценарий , если указаны дата начала, дата окончания, время начала и время окончания фильтра. STARTDATE: 23/01/2015 ENDDATE: 25/01/2015 начальное время: 10:00:00 Конечное время: 16:00:00Найти объекты между двумя датами вместе с определенным временем MongoDB

Поэтому мне нужно фильтровать все объекты, которые создаются между STARTDATE (23/01/2015) и endDate (25/01/2015). Также время создания должно быть между startTime (10:00:00) и endTime (16:00:00). Таким образом, объект, созданный 24/01/2015, но в 09:00:00, не будет отфильтрован в соответствии с моим вариантом использования.

Есть ли какой-либо запрос mongo для достижения того же, где мы можем передавать дату и время отдельно. Если не любезно предложите некоторое обходное решение.

+1

Какой формат даты вы сохранили в коллекции монго? можете ли вы предоставить свои данные образца? Если вы используете дату ISO, то вам это может быть полезно - http://stackoverflow.com/questions/2943222/find-objects-between-two-dates-mongodb – Vishwas

ответ

0
for (var d = new Date(2015, 0, 23, 10, 00, 00); d <= new Date(2015, 0,25,16,00,00); d.setDate(d.getDate() + 1)) { 
    var d1 = d.setHours(d.getHours()+6); 
    db.coll.find({createdDate:{$gte:d, $lte:d1}}) 
} 
+0

Спасибо за быстрый ответ. Есть ли какой-либо запрос mongo для этого же? – user45232

+0

Yup. вы можете изменить один и тот же java-скрипт. просто запрос 'db.coll.find ({createdDate: {$ и: [{$ gte: ISODate (" 2015-01-23 10: 00: 00Z "), $ lte: ISODate (" 2015-01-23 16: 00: 00Z ")}, {$ gte: ISODate (" 2015-01-24 10: 00: 00Z "), $ lte: ISODate (" 2015-01-24 16: 00: 00Z ")}, {$ gte : ISODate («2015-01-25 10: 00: 00Z»), $ lte: ISODate («2015-01-25 16: 00: 00Z»)}]}) '. Формат даты может варьироваться в зависимости от вашей структуры, – harshad

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