2016-11-21 10 views
0

Я использую node.js и Mongo DB в своем приложении.MongoDB запрос диапазона дат

Я сохраненная дата в field(datetime) от записи в MongoDB как:

db.collection('person').insertOne({"name": "ABC","age": "40","datetime": Date()} 

Это выводит дату как: "datetime":"Mon Nov 21 2016 00:47:39 GMT-0500 (Eastern Standard Time)"

Сейчас я пытаюсь найти все записи, которые больше, чем конкретная Дата. Для этого я сделать следующее:

db.collection('person').find({'datetime':{$gt: startingdate}) 

где STARTINGDATE содержит 22,11,2016.

Это не работает и получает мне все записи, которые имеют поля даты и времени.

Я даже попытался с помощью:

startingdate = Date(22,11,2016) 

и

startingdate = Date(2016,11,22) 

, но безрезультатно. Может кто-нибудь помочь мне понять это?

Спасибо!

ответ

1

Использовать new Date() вместо Date().

new Date() возвращает объект даты, тогда как Date() возвращает строковое представление даты и времени.

Вам необходимо отправить объект даты MongoDB, чтобы он мог преобразовать объект даты в ISODate.

+0

Нет, это не сработало! –

+0

@AkashDivakarGore It * будет * работать, если вы используете правильный синтаксис для строки, которую вы передаете в функцию 'new Date()'. –

+0

@VinceBowdren: Я пробовал startdate = new Date (2016-11-21T00: 00: 00Z), а также попробовал startdate = new Date (2016-11-21). Вы могли бы выделить правильный синтаксис для строки, которая будет передана ? Благодаря! –

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