2013-06-19 3 views
2

Я использую API (поэтому у меня нет контроля над полями) - одно из полей имеет тип Date.Как преобразовать формат даты в mongodb

Теперь, я считаю, что дата хранится в записях напоминает следующее значение:

{ 
    ... 
    "foobarDate": "2013-05-26T05:00:00.000Z", 
    ... 
} 

Теперь я хочу, чтобы получить некоторые записи на основе этой даты - например, мне нужно, чтобы получить все записи, в которых fooBarDate уже сегодня.

Если я использую Date() функциональность JavaScript, а затем я получаю дату в следующем формате:
Wed Jun 19 2013 21:13:50 GMT+0530 (IST)

Если я пытаюсь разработать свой запрос следующим образом ...

{ 
    "fooBarDate": { 
     "$lte": <the date calculated in javascript> 
    } 
} 

... Я не получаю записи - я получаю пустой массив - я подозреваю, что это связано с тем, что формат даты, хранящейся в MongoDB, отличается от формата, который я передаю.

Как преобразовать формат даты Javascript в формат mongodb? Или, по крайней мере, как получить текущую дату в формате, хранящемся в MongoDB?

P.S. Я использую nodeJs и хочу запросить DB в этом случае.

ответ

5

Mongo магазины датированы ISODate объектов. Просто обернуть нашу дату в ISODate конструктор:

{ 
    "fooBarDate": { 
     "$lte": ISODate("2013-05-26T05:00:00.000Z") 
    } 
} 
+0

Это немного вводит в заблуждение, как 'ISODate' просто преобразует строку в родной' date' типа, но MongoDB хранит даты как 64-разрядное целое число BSON дат. – JohnnyHK

+0

Что делать, если я хочу сравнить fooBarDate с форматом Y-m-d –

1

Правильный формат данных, если вы передаете строку в запрос, это ISO8601, который выглядит так, как вы это делали, однако вы также можете передать объект даты javascript непосредственно в запрос и получить тот же результат. Похоже, что у вас могут отсутствовать соответствующие скобки, которые могут привести к сбою вашего запроса. Попробуйте переформатировать свой код таким образом (редактировать Я использую мангуст, но я думаю, что прямо Монго то же самое):

var currentTime = new Date; 
orm.Records.find({lastUpdate:{$lte:currentTime}}) 
Смежные вопросы