2015-02-27 7 views
1

У меня есть сомнения, я сохранил некоторые даты, подобные этому, timeStamp: «2014-10-30T15: 13: 37.199Z», в мангусте.найти по дате в mongoose

Но я хочу, чтобы сделать поиск как это:

model.find({ timeStamp: { $gte: startDate, $lt: endDate }}) 

Где STARTDATE и ENDDATE являются, например, 2014-10-30. Это возможно.

+0

Да, я думаю, вы можете использовать. Но если вы используете '2014-10-30' для обоих полей, то Mongoose может конвертироваться в' 2014-10-30T00: 00: 00.000Z'. Поэтому я думаю, что вы можете использовать '2014-10-30T00: 00: 00.000Z' для' startDate' и '2014-10-30T23: 59: 59.999Z' для' endDate' – efkan

+0

Спасибо за ответ, теперь, если вы используете новый Команда даты с узла, как я могу сэкономить часы до середины, например, если я использую новую дату, я получаю 2015-02-28T12: 17: 37.199Z, как я могу рассчитать до 2015-02-28T00: 00: 00Z? – diego

ответ

0

Я должен написать здесь из-за лучшего кода.

если ваше поле даты имеет строковое значение, которое вы можете использовать только;

startDate = startDate + "T23:59:59"; 

прочее;

startDate.setHours(23) 
startDate.setMinutes(59) 
startDate.setSeconds(59) 

Node.js и Mongoose позволяет использовать функции даты Javascript. Так что, если вы хотите, вы можете посетить http://www.w3schools.com/jsref/jsref_obj_date.asp

Пожалуйста, дайте мне знать ваши результаты.

+0

Я попробую то, что вы указали мне, но все равно искать только по дате, например, 2015-02-28 без времени, хотя мангуста сохранили дату со временем, как это 2015-02-28T12: 17: 37.199 Z? – diego

+0

Если ваше поле даты определено как 'Date', Mongoose сохраняет значения как' ISODate() 'для этого поля. На самом деле это основная цель Mongoose (сопоставление данных объектов). Фактически вы можете запросить свою коллекцию, используя функцию 'aggregate', по годам, месяцам и дням. Вот ответ; http://stackoverflow.com/a/8136834/3765109 Имеет ли он право на вас? – efkan

+0

Спасибо за ваши ответы. Я попробую их и прокомментирую, как это работает. – diego

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