2015-07-16 3 views
0

Я пытаюсь получить документы предыдущего дня от MongoDB, используя скрипт bash и JavaScript.1 день старые документы получить от mongodb

Я использовал JS передать запрос на MongoDB, но есть проблема, когда я получаю дату, потому что это так:

2015-7-3 6: 2: 00

но в моих записях БД, как это:

2015-07-03 06:02:00

var d = new Date(); 
db.mycoll.find({ "requestedDateTime" : { $gte :d.getFullYear()+'-'+(d.getUTCMonth() + 1)+'-'+(d.getDate() - 1)+' 06:00:00' }}); 

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

ответ

1

Просто используйте Дата математику

var today = new Date(), 
    yesterday = new Date(today.valueOf() - (1000 * 60 * 60 * 24); 

Или округляется до начала дня UTC:

var date = new Date(), 
    today = new Date(date.valueOf() - (date.valueOf() % (1000 * 60 * 60 * 24))), 
    yesterday = new Date(today.valueOf() - (1000 * 60 * 60 * 24)); 

Затем переходят в запросе:

db.mycoll.find({ "requestedDate": { "$gte": yesterday, "$lt": today } }); 

Так что либо 24 часов с время извлечения или 24 часа в предыдущий день. Возьмите выбор в зависимости от того, что вы хотите.

+0

Я ценю ваши усилия по оказанию мне помощи. к сожалению, это не сработает, он будет доставлять iso date, и он не будет работать с db. ** «requestDateTime»: «2015-07-02 15:10:21» ** это как date in mongodb –

+0

@DarshanaKapuge Dates в MongoDB находятся объекты 'Date', а не строки, которые вы пытаетесь сделать. Вам нужно использовать объект 'Date'. Поверь мне, я это знаю. Если, конечно, ваши даты не хранятся в виде строк, что «очень неправильно». Вы должны фиксировать даты, хранящиеся в коллекции. –

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